Merge pull request #2015 from Neerti/12/16/2015_newwizard

Dry-dock phase for Technomancer
This commit is contained in:
Yoshax
2016-07-10 03:43:35 +01:00
committed by GitHub
122 changed files with 8414 additions and 2989 deletions
+1
View File
@@ -110,6 +110,7 @@
// redirect the projectile
P.redirect(new_x, new_y, curloc, user)
P.reflected = 1
return PROJECTILE_CONTINUE // complete projectile permutation
@@ -341,6 +341,8 @@
var/obj/item/organ/external/affected_organ = get_organ(check_zone(def_zone))
var/siemens_coeff = base_siemens_coeff * get_siemens_coefficient_organ(affected_organ)
if(fire_stacks < 0) // Water makes you more conductive.
siemens_coeff *= 1.5
return ..(shock_damage, source, siemens_coeff, def_zone)
@@ -40,6 +40,8 @@ emp_act
/mob/living/carbon/human/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone)
var/obj/item/organ/external/affected = get_organ(check_zone(def_zone))
var/siemens_coeff = get_siemens_coefficient_organ(affected)
if(fire_stacks < 0) // Water makes you more conductive.
siemens_coeff *= 1.5
stun_amount *= siemens_coeff
agony_amount *= siemens_coeff
@@ -10,8 +10,11 @@
if(embedded_flag)
handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
if(force_max_speed)
return -3 // Returning -1 will actually result in a slowdown for Teshari.
if(CE_SPEEDBOOST in chem_effects)
return -1
return -3
var/health_deficiency = (maxHealth - health)
if(health_deficiency >= 40) tally += (health_deficiency / 25)
@@ -44,3 +44,6 @@
var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks.
var/lastpuke = 0
var/evasion = 0 // Makes attacks harder to land. Each number equals 15% more likely to miss. Negative numbers increase hit chance.
var/force_max_speed = 0 // If 1, the mob runs extremely fast and cannot be slowed.
@@ -126,6 +126,7 @@
// redirect the projectile
P.redirect(new_x, new_y, curloc, src)
P.reflected = 1
return -1 // complete projectile permutation
@@ -155,7 +155,7 @@
eject_brain()
death()
/mob/living/simple_animal/spiderbot/proc/update_icon()
/mob/living/simple_animal/spiderbot/update_icon()
if(mmi)
if(positronic)
icon_state = "spiderbot-chassis-posi"
@@ -81,6 +81,7 @@
var/destroy_surroundings = 0
var/shuttletarget = null
var/enroute = 0
var/ai_inactive = 0 // Set to 1 to turn off most AI actions in Life()
var/list/resistances = list(
HALLOSS = 0,
@@ -135,7 +136,7 @@
handle_supernatural()
//Movement
if(!client && !stop_automated_movement && wander && !anchored)
if(!client && !stop_automated_movement && wander && !anchored && !ai_inactive)
if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc.
turns_since_move++
if(turns_since_move >= turns_per_move)
@@ -235,7 +236,7 @@
adjustBruteLoss(unsuitable_atoms_damage)
//Hostility
if(!stat && !client && hostile)
if(!stat && !client && hostile && !ai_inactive)
switch(stance)
if(STANCE_IDLE)
target_mob = FindTarget()
@@ -123,7 +123,7 @@
return
proc/update_icon() //only for the sake of consistency with the other update icon procs
update_icon() //only for the sake of consistency with the other update icon procs
if(stat == CONSCIOUS || stat == UNCONSCIOUS)
if(previous) //midsection
icon_state = "spaceworm[get_dir(src,previous) | get_dir(src,next)]" //see 3 lines below
+3
View File
@@ -31,9 +31,12 @@
var/obj/screen/gun/run/gun_run_icon = null
var/obj/screen/gun/mode/gun_setting_icon = null
var/obj/screen/ling/chems/ling_chem_display = null
var/obj/screen/wizard/energy/wiz_energy_display = null
var/obj/screen/wizard/instability/wiz_instability_display = null
//spells hud icons - this interacts with add_spell and remove_spell
var/list/obj/screen/movable/spell_master/spell_masters = null
var/obj/screen/movable/ability_master/ability_master = null
/*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob.
A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such.
+12
View File
@@ -124,3 +124,15 @@
//----------------------------
/obj/effect/projectile/bullet/muzzle
icon_state = "muzzle_bullet"
//----------------------------
// Lightning beam
//----------------------------
/obj/effect/projectile/lightning/tracer
icon_state = "lightning"
/obj/effect/projectile/lightning/muzzle
icon_state = "muzzle_lightning"
/obj/effect/projectile/lightning/impact
icon_state = "impact_lightning"
+2 -1
View File
@@ -54,6 +54,7 @@
var/drowsy = 0
var/agony = 0
var/embed = 0 // whether or not the projectile can embed itself in the mob
var/reflected = 0 // This should be set to 1 if reflected by any means, to prevent infinite reflections.
var/hitscan = 0 // whether the projectile should be hitscan
var/step_delay = 1 // the delay between iterations if not a hitscan projectile
@@ -169,7 +170,7 @@
return
//roll to-hit
miss_modifier = max(15*(distance-2) - round(15*accuracy) + miss_modifier, 0)
miss_modifier = max(15*(distance-2) - round(15*accuracy) + miss_modifier + round(15*target_mob.evasion), 0)
var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss
var/result = PROJECTILE_FORCE_MISS
@@ -127,12 +127,9 @@
if(istype(L))
var/needed = L.fire_stacks * 10
if(amount > needed)
L.fire_stacks = 0
L.ExtinguishMob()
remove_self(needed)
else
L.adjust_fire_stacks(-(amount / 10))
remove_self(amount)
L.adjust_fire_stacks(-(amount / 10))
remove_self(needed)
/datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
if(istype(M, /mob/living/carbon/slime))
+2 -1
View File
@@ -29,7 +29,7 @@ Procs for targeting
set_light(traitdat.traits[TRAIT_XENO_GLOW_RANGE], traitdat.traits[TRAIT_XENO_GLOW_STRENGTH], traitdat.traits[TRAIT_XENO_BIO_COLOR])
else
set_light(0, 0, "#000000") //Should kill any light that shouldn't be there.
hostile = traitdat.traits[TRAIT_XENO_HOSTILE]
speed = traitdat.traits[TRAIT_XENO_SPEED]
@@ -144,6 +144,7 @@ Procs for targeting
// redirect the projectile
P.redirect(new_x, new_y, curloc, src)
P.reflected = 1
return -1
+19 -19
View File
@@ -16,35 +16,35 @@ Also includes Life and New
attack_sound = null
friendly = "touches"
environment_smash = 0
var/datum/xeno/traits/traitdat //Trait datum.
var/internal_vol = 1000 //Internal volume for ingesting/injected reagents
var/obj/temp_chem_holder //Used in handle_reagents()
var/mutable = NOMUT //Flag for mutation.
var/nameVar = "Blah"
var/instability = 0
var/mut_instability = 0
var/stasis = 0
var/mut_level = 0 //How mutated a specimen is. Irrelevant while mutable = NOMUT.
var/mut_max = 100000
var/colored = 1
var/maleable = MIN_MALEABLE //How easy is it to manipulate traitdat.traits after it's alive.
var/stability = 0 //Used in gene manipulation
//Traits that might not be maleable.
var/list/chemreact = list()
var/hunger_factor = 10
var/chromatic = 0
var/starve_damage = 0
//Used for speech learning
var/list/speech_buffer = list()
var/list/default_chems = list()
//Life additions
/mob/living/simple_animal/xeno/Life()
if(stasis)
@@ -52,16 +52,16 @@ Also includes Life and New
if(stasis < 0)
stasis = 0
return 0
..()
if(!(stat == DEAD))
handle_reagents()
if((mut_level >= mut_max) && !(mutable & NOMUT))
Mutate()
mut_level -= mut_max
ProcessSpeechBuffer()
//Have to feed the xenos somehow.
if(nutrition < 0)
nutrition = 0
@@ -71,15 +71,15 @@ Also includes Life and New
else
if(traitdat.traits[TRAIT_XENO_EATS])
health = starve_damage
return 1 //Everything worked okay.
/mob/living/simple_animal/xeno/New()
traitdat = new()
ProcessTraits()
..()
if(colored)
color = traitdat.get_trait(TRAIT_XENO_COLOR)
@@ -89,12 +89,12 @@ Also includes Life and New
nutrition = 350
for(var/R in default_chems)
traitdat.chems[R] = default_chems[R]
traitdat.source = name
if(!health)
stat = DEAD
/mob/living/simple_animal/xeno/Destroy()
traitdat.Destroy() //Let's clean up after ourselves.
traitdat = null