Xeno Tweaking

This commit is contained in:
Fox-McCloud
2014-12-16 20:26:27 -05:00
parent f3df63247d
commit 84b9f05149
20 changed files with 351 additions and 416 deletions
+4 -4
View File
@@ -120,14 +120,14 @@
w_cand -= weed_turf
if(weed_turf.density)
continue
if(locate(/obj/effect/alien) in weed_turf)
if(locate(/obj/structure/alien) in weed_turf)
continue
if(weed_turf && !egged)
new /obj/effect/alien/weeds/node(weed_turf)
new /obj/structure/alien/weeds/node(weed_turf)
weeds += weed_turf
break
for(var/e=0;e<eggs_left;e++)
var/turf/egg_turf = pick(all_floors)
if(egg_turf && !(locate(/obj/effect/alien) in egg_turf))
new /obj/effect/alien/egg(egg_turf)
if(egg_turf && !(locate(/obj/structure/alien) in egg_turf))
new /obj/structure/alien/egg(egg_turf)
@@ -1,5 +1,5 @@
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point
/mob/living/carbon/alien
@@ -16,7 +16,7 @@
alien_talk_understand = 1
nightvision = 1
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/has_fine_manipulation = 0
@@ -29,7 +29,7 @@
var/oxygen_alert = 0
var/toxins_alert = 0
var/fire_alert = 0
var/large = 0
var/heat_protection = 0.5
var/leaping = 0
@@ -39,8 +39,8 @@
verbs += /mob/living/verb/lay_down
internal_organs += new /obj/item/brain/alien
..()
..()
/mob/living/carbon/alien/adjustToxLoss(amount)
storedPlasma = min(max(storedPlasma + amount,0),max_plasma) //upper limit of max_plasma, lower limit of 0
updatePlasmaDisplay()
@@ -69,7 +69,7 @@
/mob/living/carbon/alien/proc/handle_environment(var/datum/gas_mixture/environment)
//If there are alien weeds on the ground then heal if needed or give some toxins
if(locate(/obj/effect/alien/weeds) in loc)
if(locate(/obj/structure/alien/weeds) in loc)
if(health >= maxHealth - getCloneLoss())
adjustToxLoss(plasma_rate)
else
@@ -79,7 +79,7 @@
if(!environment)
return
var/loc_temp = T0C
if(istype(loc, /obj/mecha))
var/obj/mecha/M = loc
@@ -193,7 +193,7 @@
/mob/living/carbon/alien/setDNA()
return
/mob/living/carbon/alien/verb/nightvisiontoggle()
set name = "Toggle Night Vision"
set category = "Alien"
@@ -243,7 +243,7 @@ Des: Removes all infected images from the alien.
/mob/living/carbon/alien/larva/updatePlasmaDisplay()
return
#undef HEAT_DAMAGE_LEVEL_1
#undef HEAT_DAMAGE_LEVEL_2
#undef HEAT_DAMAGE_LEVEL_3
@@ -23,25 +23,15 @@ Doesn't work on other aliens/AI.*/
set desc = "Plants some alien weeds"
set category = "Alien"
if(locate(/obj/effect/alien/weeds/node) in get_turf(src))
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
src << "<span class='noticealien'>There's already a weed node here.</span>"
return
if(constructing)
src << "<span class='noticealien'>You are already constructing something.</span>"
return
if(powerc(50,1))
constructing = 1
stunned = 5
src << "<span class='noticealien'>You start planting a weed node.</span>"
spawn(30)
adjustToxLoss(-50)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has planted some alien weeds!</span>"), 1)
new /obj/effect/alien/weeds/node(loc)
constructing = 0
stunned = 0
adjustToxLoss(-50)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has planted some alien weeds!</span>"), 1)
new /obj/structure/alien/weeds/node(loc)
return
/mob/living/carbon/alien/humanoid/verb/whisp(mob/M as mob in oview())
@@ -106,7 +96,7 @@ Doesn't work on other aliens/AI.*/
return
adjustToxLoss(-200)
new /obj/effect/alien/acid(get_turf(O), O)
new /obj/effect/acid(get_turf(O), O)
visible_message("<span class='alertalien'>[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!</span>")
else
src << "<span class='noticealien'>Target is too far away.</span>"
@@ -136,37 +126,24 @@ Doesn't work on other aliens/AI.*/
return
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
set name = "Secrete Resin (75)"
set name = "Secrete Resin (55)"
set desc = "Secrete tough malleable resin."
set category = "Alien"
if(powerc(75))
if(constructing)
src << "<span class='noticealien'>You are already constructing something.</span>"
return
var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin door","resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
if(!choice || !powerc(75))
return
constructing = 1
stunned = 5
src << "<span class='noticealien'>You start shaping a [choice].</span>"
spawn(60)
adjustToxLoss(-75)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] vomits up a thick purple substance and shapes it!</span>"), 1)
switch(choice)
if("resin door")
new /obj/structure/mineral_door/resin(loc)
if("resin wall")
new /obj/effect/alien/resin/wall(loc)
if("resin membrane")
new /obj/effect/alien/resin/membrane(loc)
if("resin nest")
new /obj/structure/stool/bed/nest(loc)
constructing = 0
stunned = 0
if(powerc(55))
var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
if(!choice || !powerc(55)) return
adjustToxLoss(-55)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] vomits up a thick purple substance and shapes it!</span>"), 1)
switch(choice)
if("resin wall")
new /obj/structure/alien/resin/wall(loc)
if("resin membrane")
new /obj/structure/alien/resin/membrane(loc)
if("resin nest")
new /obj/structure/stool/bed/nest(loc)
return
/mob/living/carbon/alien/humanoid/verb/regurgitate()
@@ -7,7 +7,7 @@
max_plasma = 250
icon_state = "aliens_s"
plasma_rate = 10
/mob/living/carbon/alien/humanoid/sentinel/large
name = "alien praetorian"
icon = 'icons/mob/alienlarge.dmi'
@@ -23,8 +23,8 @@
maxHealth = 200
health = 200
move_delay_add = 1
large = 1
large = 1
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
update_hud() //TODO: remove the need for this to be here
@@ -38,7 +38,7 @@
icon_state = "prat_s"
for(var/image/I in overlays_standing)
overlays += I
/mob/living/carbon/alien/humanoid/sentinel/New()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
@@ -70,7 +70,7 @@
else
healths.icon_state = "health6"
/*
/mob/living/carbon/alien/humanoid/sentinel/verb/evolve() // -- TLE
set name = "Evolve (250)"
set desc = "Become a Praetorian, Royal Guard to the Queen."
@@ -89,4 +89,4 @@
new_xeno.mind.name = new_xeno.name
del(src)
return
*/
@@ -77,26 +77,15 @@
/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
if(locate(/obj/effect/alien/egg) in get_turf(src))
set category = "Alien"
if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "<span class='noticealien'>There's already an egg here.</span>"
return
if(constructing)
src << "<span class='noticealien'>You are already constructing something.</span>"
return
if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
constructing = 1
stunned = 5
src << "<span class='noticealien'>You start laying an egg.</span>"
spawn(30)
adjustToxLoss(-250)
for(var/mob/O in viewers(src, null))
O.show_message(text("\green <B>[src] has laid an egg!</B>"), 1)
new /obj/effect/alien/egg(loc)
constructing = 0
stunned = 0
if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
adjustToxLoss(-75)
for(var/mob/O in viewers(src, null))
O.show_message(text("\green <B>[src] has laid an egg!</B>"), 1)
new /obj/structure/alien/egg(loc)
return
@@ -10,11 +10,10 @@
var/next_attack = 0
update_icon = 1
var/leap_on_click = 0
var/constructing = 0
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/humanoid/New()
var/datum/reagents/R = new/datum/reagents(100)
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "alien")
@@ -52,15 +51,15 @@
/mob/living/carbon/alien/humanoid/movement_delay()
var/tally = 0
if (istype(src, /mob/living/carbon/alien/humanoid/queen))
tally += 5
tally += 4
if (istype(src, /mob/living/carbon/alien/humanoid/drone))
tally += 2
tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
tally += 1
tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/hunter))
tally = -1 // hunters go supersuperfast
tally = -2 // hunters go supersuperfast
return (tally + move_delay_add + config.alien_delay)
/mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0)
return 1
@@ -250,7 +249,7 @@
if (M_HULK in M.mutations)//M_HULK SMASH
damage += 14
spawn(0)
Weaken(damage) // Why can a hulk knock an alien out but not knock out a human? Damage is robust enough.
Paralyse(1)
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
@@ -259,7 +258,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has punched []!</B>", M, src), 1)
if (damage > 9||prob(5))//Regular humans have a very small chance of weakening an alien.
Weaken(1,5)
Paralyse(2)
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has weakened []!</B>", M, src), 1, "\red You hear someone fall.", 2)
@@ -274,7 +273,7 @@
if ("disarm")
if (!lying)
if (prob(5))//Very small chance to push an alien down.
Weaken(2)
Paralyse(2)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -321,4 +320,4 @@
/mob/living/carbon/alien/humanoid/canBeHandcuffed()
return 1
return 1
@@ -7,8 +7,6 @@
status_flags = CANPARALYSE
heal_rate = 5
plasma_rate = 20
move_delay_add = 2
max_plasma = 1000
large = 1
/mob/living/carbon/alien/humanoid/queen/New()
@@ -58,29 +56,19 @@
//Queen verbs
/mob/living/carbon/alien/humanoid/queen/verb/lay_egg()
set name = "Lay Egg (250)"
set name = "Lay Egg (75)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
if(locate(/obj/effect/alien/egg) in get_turf(src))
if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "<span class='noticealien'>There's already an egg here.</span>"
return
if(constructing)
src << "<span class='noticealien'>You are already constructing something.</span>"
return
if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
constructing = 1
stunned = 5
src << "<span class='noticealien'>You start laying an egg.</span>"
spawn(60)
adjustToxLoss(-250)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has laid an egg!</span>"), 1)
new /obj/effect/alien/egg(loc)
constructing = 0
stunned = 0
return
if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
adjustToxLoss(-75)
for(var/mob/O in viewers(src, null))
O.show_message(text("<span class='alertalien'>[src] has laid an egg!</span>"), 1)
new /obj/structure/alien/egg(loc)
return
/mob/living/carbon/alien/humanoid/queen/large
@@ -104,7 +92,7 @@
overlays += I
/*
/mob/living/carbon/alien/humanoid/queen/verb/evolve() // -- TLE
set name = "Evolve (1000)"
set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time."
@@ -134,3 +122,4 @@
src << "<span class='notice'>We already have an alive empress.</span>"
return
*/
@@ -2,7 +2,7 @@
name = "alien larva"
real_name = "alien larva"
icon_state = "larva0"
pass_flags = PASSTABLE
pass_flags = PASSTABLE | PASSMOB
maxHealth = 30
health = 30
@@ -39,20 +39,19 @@
apply_damage(damage, BRUTE, affecting, armor_block)
if (damage >= 25)
visible_message("\red <B>[M] has wounded [src]!</B>")
apply_effect(rand(0.5,3), WEAKEN, armor_block)
apply_effect(4, WEAKEN, armor_block)
updatehealth()
if("disarm")
if (prob(80))
var/randn = rand(1, 100)
if (randn <= 80)
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
Weaken(rand(0.5,3))
Weaken(5)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has tackled down []!</B>", M, src), 1)
if (prob(25))
M.Weaken(rand(2,4))
else
if (prob(80))
if (randn <= 99)
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
drop_item()
visible_message(text("\red <B>[] disarmed []!</B>", M, src))
+2
View File
@@ -1,6 +1,8 @@
/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover) && mover.checkpass(PASSMOB))
return 1
if(ismob(mover))
var/mob/moving_mob = mover
if ((other_mobs && moving_mob.other_mobs))
+2 -2
View File
@@ -1505,8 +1505,8 @@ datum
O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1)
reaction_obj(var/obj/O, var/volume)
if(istype(O,/obj/effect/alien/weeds/))
var/obj/effect/alien/weeds/alien_weeds = O
if(istype(O,/obj/structure/alien/weeds/))
var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
alien_weeds.healthcheck()
else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it