mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 14:37:04 +01:00
Xeno Tweaking
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user