Bugfixes:

- Wizards and Changeling stings can no longer select ghosts.
     - AIs can no longer change their icon if they're out of power or dead.
     - PC Metroids can latch onto cyborgs, but they won't actually do anything. NPC Metroids simply won't ever latch onto cyborgs (but they will attack them if provoked!)

Changes:
     - Gave Metroids a slightly longer attack delay.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1988 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
vageyenaman@gmail.com
2011-08-07 02:00:48 +00:00
parent d6c1fc48cb
commit ba4a214191
5 changed files with 265 additions and 206 deletions
+15 -4
View File
@@ -259,13 +259,23 @@
if(Target in view(1,src))
if(istype(Target, /mob/living/silicon))
if(!Atkcool)
spawn()
Atkcool = 1
sleep(15)
Atkcool = 0
if(get_obstacle_ok(Target))
Target.attack_metroid(src)
return
if(prob(80) && !Target.lying)
if(Target.client && Target.health >= rand(10,30))
if(!Atkcool)
spawn()
Atkcool = 1
sleep(10)
sleep(25)
Atkcool = 0
if(get_obstacle_ok(Target))
@@ -276,11 +286,12 @@
step_to(src, Target)
else
Feedon(Target)
if(!Atkcool)
Feedon(Target)
else
Feedon(Target)
if(!Atkcool)
Feedon(Target)
else
if(Target in view(30, src))
@@ -10,7 +10,7 @@
return
var/list/choices = list()
for(var/mob/living/carbon/C in view(1,src))
for(var/mob/living/C in view(1,src))
if(C!=src && !istype(C,/mob/living/carbon/metroid))
choices += C
@@ -18,7 +18,7 @@
if(!M) return
if(M in view(1, src))
if(istype(M, /mob/living/carbon) && !istype(src, /mob/living/carbon/brain))
if(!istype(src, /mob/living/carbon/brain))
if(!istype(M, /mob/living/carbon/metroid))
if(stat != 2)
if(health > -70)
@@ -57,7 +57,7 @@
while(Victim && M.health > -70 && stat != 2)
// M.canmove = 0
canmove = 0
if(prob(15) && M.client)
if(prob(15) && M.client && istype(M, /mob/living/carbon))
M << "\red [pick("You can feel your body becoming weak!", \
"You feel like you're about to die!", \
"You feel every part of your body screaming in agony!", \
@@ -66,54 +66,62 @@
"You feel extremely weak!", \
"A sharp, deep pain bathes every inch of your body!")]"
Victim.cloneloss += rand(1,10)
Victim.toxloss += rand(1,2)
if(Victim.health <= 0)
Victim.toxloss += rand(2,4)
if(istype(M, /mob/living/carbon))
Victim.cloneloss += rand(1,10)
Victim.toxloss += rand(1,2)
if(Victim.health <= 0)
Victim.toxloss += rand(2,4)
if(toxloss > 0)
toxloss = max(0, toxloss-10)
if(toxloss > 0)
toxloss = max(0, toxloss-10)
if(oxyloss > 0)
oxyloss = max(0, oxyloss-10)
if(oxyloss > 0)
oxyloss = max(0, oxyloss-10)
if(bruteloss > 0)
bruteloss = max(0, bruteloss-10)
if(bruteloss > 0)
bruteloss = max(0, bruteloss-10)
if(fireloss > 0)
fireloss = max(0, fireloss-10)
if(fireloss > 0)
fireloss = max(0, fireloss-10)
if(cloneloss > 0)
cloneloss = max(0, cloneloss-10)
if(cloneloss > 0)
cloneloss = max(0, cloneloss-10)
if(Victim)
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
if(Metroid.Victim == M && Metroid != src)
Metroid.Feedstop()
if(Victim)
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
if(Metroid.Victim == M && Metroid != src)
Metroid.Feedstop()
if(toxloss<0) toxloss = 0
if(oxyloss<0) oxyloss = 0
if(bruteloss<0) bruteloss = 0
if(fireloss<0) fireloss = 0
if(cloneloss<0) cloneloss = 0
if(toxloss<0) toxloss = 0
if(oxyloss<0) oxyloss = 0
if(bruteloss<0) bruteloss = 0
if(fireloss<0) fireloss = 0
if(cloneloss<0) cloneloss = 0
nutrition += rand(5,20)
if(nutrition >= lastnut + 100)
if(prob(20))
lastnut = nutrition
powerlevel++
if(powerlevel > 10)
powerlevel = 10
nutrition += rand(5,20)
if(nutrition >= lastnut + 100)
if(prob(20))
lastnut = nutrition
powerlevel++
if(powerlevel > 10)
powerlevel = 10
if(istype(src, /mob/living/carbon/metroid/adult))
if(nutrition > 1200)
nutrition = 1200
else
if(nutrition > 1000)
nutrition = 1000
Victim.updatehealth()
updatehealth()
if(istype(src, /mob/living/carbon/metroid/adult))
if(nutrition > 1200)
nutrition = 1200
else
if(nutrition > 1000)
nutrition = 1000
Victim.updatehealth()
updatehealth()
if(prob(25))
src << "\red <i>[pick("This subject is incompatable", \
"This subject does not have a life energy", "This subject is empty", \
"I am not satisified", "I can not feed from this subject", \
"I do not feel nurished", "This subject is not food")]...</i>"
sleep(rand(15,45))
+3
View File
@@ -63,6 +63,9 @@
/mob/living/silicon/ai/verb/pick_icon()
set category = "AI Commands"
set name = "Change AI Core Display"
if(stat || aiRestorePowerRoutine)
return
//if(icon_state == initial(icon_state))
var/icontype = input("Please, select a display!", "AI", null/*, null*/) in list("Clown", "HAL9000", "Monochrome", "Blue", "HAL9000 Mark2", "Inverted", "Firewall", "Green")