There's a few things in this revision made by me, and some made by other people that

requested I commit into the SVN. Please PM the collective coders if you find any bugs in 

their work.


AI:

     The AI now has a verb that lets it change its appearance. It doesn't do much, but but 

it's some neat aesthetics that compliment the little display panes scattered around the 

station that the AI can modify. This was a combined effort between Firecage, Petethegoat, 

and Superxpdude.



Miscellaneous Changes (by Petethegreat):

     - Cup Ramen sprite changed to a nicer one by Cheridan
     - Plasma sheet sprite changed to a thicker one by Aru




Metroids:

     They work. There might be some lingering bugs I simply cannot catch by testing alone, 

but they WORK. They act as an entire new player-controllable race, are found in 

xeniobiology, and I refuse to say anything else on the matter that would spoil anything. If 

you feel so entitled to, you can view the source code to spoil everything like a little 

cheater! I haven't completed everything I would like to, and as a result Metroids are 

pretty useless. They're still very fun though!

     Xenobiology, as a result of Metroids, got a bit of expansion. Scientists have access 

to Xenobiology now, for now. If anyone wants Xenobiology to become a standalone job or 

whatever, here's the place to post feedback.


Bugfixes:
     
     - Perriot's Throat virus no longer makes you mute, instead, does what it was intended 

to HONKHONKHONKHONK!!!!
     - Some bugfixes with Turrets.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1774 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
vageyenaman@gmail.com
2011-07-05 19:34:42 +00:00
parent 94373b7aeb
commit ebcdc09c10
40 changed files with 4802 additions and 3921 deletions
+11
View File
@@ -18,6 +18,13 @@
src.attack_paw(user)
return
// for metroids
/atom/proc/attack_metroid(mob/user as mob)
return
/atom/proc/hand_h(mob/user as mob)
return
@@ -360,6 +367,10 @@
else
if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)|| istype(usr, /mob/living/silicon/hivebot))
src.attack_ai(usr, usr.hand)
else
if(istype(usr, /mob/living/carbon/metroid))
src.attack_metroid(usr)
else
if (istype(usr, /mob/living/carbon/human))
src.hand_h(usr, usr.hand)
+28 -2
View File
@@ -9,6 +9,8 @@
var/obj/machinery/sleeper/connected = null
anchored = 1 //About time someone fixed this.
density = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
/obj/machinery/sleep_console/ex_act(severity)
switch(severity)
@@ -27,7 +29,12 @@
/obj/machinery/sleep_console/New()
..()
spawn( 5 )
src.connected = locate(/obj/machinery/sleeper, get_step(src, WEST))
if(orient == "RIGHT")
icon_state = "sleeperconsole-r"
src.connected = locate(/obj/machinery/sleeper, get_step(src, EAST))
else
src.connected = locate(/obj/machinery/sleeper, get_step(src, WEST))
return
return
@@ -121,6 +128,17 @@
var/occupied = 0 // So there won't be multiple persons trying to get into one sleeper
var/mob/occupant = null
anchored = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
/obj/machinery/sleeper/New()
..()
spawn( 5 )
if(orient == "RIGHT")
icon_state = "sleeper_0-r"
return
return
/obj/machinery/sleeper/dummy//For effects only.
icon_state = "sleeper_1"
@@ -178,6 +196,9 @@
M.loc = src
src.occupant = M
src.icon_state = "sleeper_1"
if(orient == "RIGHT")
icon_state = "sleeper_1-r"
for(var/obj/O in src)
O.loc = src.loc
src.add_fingerprint(user)
@@ -245,7 +266,9 @@
src.occupant.loc = src.loc
src.occupant.metabslow = 0
src.occupant = null
src.icon_state = "sleeper_0"
if(orient == "RIGHT")
icon_state = "sleeper_0-r"
return
/obj/machinery/sleeper/proc/inject_inap(mob/user as mob)
@@ -360,6 +383,9 @@
usr.metabslow = 1
src.occupant = usr
src.icon_state = "sleeper_1"
if(orient == "RIGHT")
icon_state = "sleeper_1-r"
for(var/obj/O in src)
del(O)
src.add_fingerprint(usr)
+11 -7
View File
@@ -477,9 +477,10 @@ Neutralize All Unidentified Life Signs: []<BR>"},
var/obj/item/projectile/A
if(!installation) // if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
A = new /obj/item/projectile/electrode( loc )
use_power(200)
if(!emagged) use_power(200)
else use_power(400)
playsound(src.loc, 'Taser.ogg', 75, 1)
icon_state = "orange_target_prism"
icon_state = "target_prism"
else
// Shooting Code:
var/obj/item/weapon/gun/energy/E=new installation
@@ -489,16 +490,19 @@ Neutralize All Unidentified Life Signs: []<BR>"},
if (istype(E, /obj/item/weapon/gun/energy/laser))
A = new /obj/item/projectile/beam( loc )
icon_state = "orange_target_prism"
use_power(500)
if(!emagged) use_power(500)
else use_power(1000)
else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle))
A = new /obj/item/projectile/beam/pulse( loc )
icon_state = "orange_target_prism"
use_power(700)
if(!emagged) use_power(700)
else use_power(1400)
else if(istype(E, /obj/item/weapon/gun/energy/taser))
A = new /obj/item/projectile/electrode( loc )
icon_state = "orange_target_prism"
use_power(200)
icon_state = "target_prism"
if(!emagged) use_power(200)
else use_power(400)
else // Energy gun shots
@@ -510,7 +514,7 @@ Neutralize All Unidentified Life Signs: []<BR>"},
else // if it has been emagged, use laser shots
A = new /obj/item/projectile/beam( loc )
icon_state = "orange_target_prism"
use_power(500)
use_power(1000)
del(E)
A.current = T
+14
View File
@@ -73,6 +73,20 @@
healthcheck()
return
/obj/grille/attack_metroid(var/obj/M)
if(!istype(usr, /mob/living/carbon/metroid/adult))
return
usr<< text("\green You smash against the grille.")
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes against the grille.", usr)
playsound(src.loc, 'grillehit.ogg', 80, 1)
src.health -= rand(2,3)
healthcheck()
return
return
/obj/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover) && mover.checkpass(PASSGRILLE))
+51 -8
View File
@@ -212,10 +212,49 @@
//spawn(1800) // this wont work right
// M.lastattacker = null
/////////////////////////
var/power = src.force
if(!istype(M, /mob/living/carbon/human))
if(istype(src, /mob/living/carbon/metroid))
var/mob/living/carbon/metroid/Metroid = M
if(prob(25))
user << "\red [src] passes right through [M]!"
return
if(power > 0)
Metroid.attacked += 10
for(var/mob/O in viewers(messagesource, null))
O.show_message(text("\red <B>[] has been attacked with [][] </B>", M, src, (user ? text(" by [].", user) : ".")), 1)
var/power = src.force
if(power >= 3)
var/mob/living/carbon/metroid/Metroid = M
if(istype(Metroid, /mob/living/carbon/metroid/adult))
if(prob(5 + round(power/2)))
Metroid.Victim = null
spawn(0)
Metroid.canmove = 0
step_away(Metroid, user)
if(prob(25 + power*2))
sleep(2)
step_away(Metroid, user)
Metroid.canmove = 1
else
if(prob(10 + power*2))
Metroid.Victim = null
spawn(0)
step_away(Metroid, user)
Metroid.canmove = 0
if(prob(25 + power*4))
sleep(2)
step_away(Metroid, user)
Metroid.canmove = 1
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if (ishuman(user) || isrobot(user) || ishivebot(user) || ismonkey(user) || isalien(user))
@@ -359,11 +398,16 @@
else
switch(src.damtype)
if("brute")
M.take_organ_damage(power)
if (prob(33)) // Added blood for whacking non-humans too
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood_floor(M)
if(istype(src, /mob/living/carbon/metroid))
M.bruteloss += power
else
M.take_organ_damage(power)
if (prob(33)) // Added blood for whacking non-humans too
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood_floor(M)
if("fire")
if (!(M.mutations & COLD_RESISTANCE))
M.take_organ_damage(0, power)
@@ -392,7 +436,7 @@
user << "\red You're going to need to remove that mask/helmet/glasses first."
return
if(istype(M, /mob/living/carbon/alien))//Aliens don't have eyes./N
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N Metroids also don't have eyes!
user << "\red You cannot locate any eyes on this creature!"
return
@@ -405,7 +449,6 @@
M.weakened += 4
M.bruteloss += 10
*/
if(M != user)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M] has been stabbed in the eye with [src] by [user].", 1)
+24
View File
@@ -147,6 +147,30 @@
return
return
/obj/window/attack_metroid()
if(!istype(usr, /mob/living/carbon/metroid/adult))
return
usr<< text("\green You smash against the window.")
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes against the window.", usr)
playsound(src.loc, 'Glasshit.ogg', 100, 1)
src.health -= rand(10,15)
if(src.health <= 0)
usr << text("\green You smash through the window.")
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
O << text("\red [] smashes through the window!", usr)
src.health = 0
new /obj/item/weapon/shard(src.loc)
if(reinf)
new /obj/item/stack/rods(src.loc)
src.density = 0
del(src)
return
return
/obj/window/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
+12 -11
View File
@@ -174,7 +174,7 @@
else
M.inertia_dir = 0
return
else
else if(!istype(M, /mob/living/carbon/metroid))
if (M.m_intent == "run")
M.pulling = null
step(M, M.dir)
@@ -187,16 +187,17 @@
return
if(2) //lube
M.pulling = null
step(M, M.dir)
spawn(1) step(M, M.dir)
spawn(2) step(M, M.dir)
spawn(3) step(M, M.dir)
spawn(4) step(M, M.dir)
M.take_organ_damage(2) // Was 5 -- TLE
M << "\blue You slipped on the floor!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.weakened = 10
if(!istype(M, /mob/living/carbon/metroid))
M.pulling = null
step(M, M.dir)
spawn(1) step(M, M.dir)
spawn(2) step(M, M.dir)
spawn(3) step(M, M.dir)
spawn(4) step(M, M.dir)
M.take_organ_damage(2) // Was 5 -- TLE
M << "\blue You slipped on the floor!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.weakened = 10
..()