#Fixed Chaplain hoodie sprite.

#Respawn_character() now properly respawns aliens and monkeys if specified to do so.
#Added more options in admin quick panel (for players) to get, send, check if traitor, narrate, and subtle message mob.
#Admins can now click an X by admin name, in asay, to jump to that admin. Makes things easier.
#Moved admin transform verbs into fun tab.
#Removed boom boom shake the room since not even hosts are allowed to use it.
#Pierrot's throat now has a 35% chance of being cured by eating bananas. Up from 5.
#Fixed AI cards.
#ed209 and Beepsky now properly figure in deafness when speaking. Doesn't affect voice files.
#Fixed Syndicate PDA not triggering door.
#Aliens can no longer magically crawl to the prison station and back.
#Aliens can now quickly (5 seconds) break out of cuffs by resisting. No change to buckled.
#Facehuggers will now properly set the alien_egg_flag if the target was infected or not. Curing the alien egg should also reset the flag. I think it will be best to get rid of the flag entirely in the future.
#Added isalienadult(mob) proc to check for humanoid aliens.
#Probably fixed death squad spawning. They pick by key now, instead of mob name.
#Spawning xenos now uses the client match method so you can specify who you want to respawn if wanted.

#Ninjas now tell admins what their set mission is. If given objectives by admin, it should report them at round end for certain rounds.
#Spawning ninjas now uses the same method as respawn character (typing in key/ckey).
#Added a ninjify admnin verb. Possible to right click.
#Can now resize spiderOS window.
#Misc fixes and adjustments. Minor map change to CentCom holding facility.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1685 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2011-06-12 18:10:53 +00:00
parent 48ad28e20c
commit 1dfe1cda8e
36 changed files with 4303 additions and 4065 deletions
-8
View File
@@ -22,14 +22,6 @@
density = 0
anchored = 0
/obj/alien/skin_suit
name = "skin"
desc = "a persons skin, disgusting"
icon_state = "weeds"
density = 0
anchored = 0
/obj/alien/resin
name = "resin"
desc = "Looks like some kind of slimy growth."
+46 -45
View File
@@ -49,7 +49,7 @@
..()
if(aliens_allowed)
health = maxhealth
src.process()
process()
else
del(src)
@@ -58,7 +58,7 @@
..()
if(!alive)
usr << text("\red <B>The alien is not moving.</B>")
else if (src.health > 5)
else if (health > 5)
usr << text("\red <B>The alien looks fresh, just out of the egg.</B>")
else
usr << text("\red <B>The alien looks injured.</B>")
@@ -73,51 +73,51 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
switch(W.damtype)
if("fire")
src.health -= W.force * 0.75
health -= W.force * 0.75
if("brute")
src.health -= W.force * 0.5
health -= W.force * 0.5
else
if (src.health <= 0)
src.death()
if (health <= 0)
death()
else if (W.force)
if(ishuman(user) || ismonkey(user))
src.target = user
src.state = 1
target = user
state = 1
..()
bullet_act(flag, A as obj)
switch(flag)
if (PROJECTILE_BULLET)
src.health -= 20
health -= 20
if (PROJECTILE_WEAKBULLET)
src.health -= 4
health -= 4
if (PROJECTILE_LASER)
src.health -= 10
health -= 10
if (PROJECTILE_PULSE)
src.health -= 35
health -= 35
healthcheck()
ex_act(severity)
switch(severity)
if(1.0)
src.death()
death()
if(2.0)
src.health -= 15
health -= 15
healthcheck()
return
meteorhit()
src.death()
death()
return
blob_act()
if(prob(50))
src.death()
death()
return
Bumped(AM as mob|obj)
if(ismob(AM) && (ishuman(AM) || ismonkey(AM)) )
src.target = AM
target = AM
set_attack()
else if(ismob(AM))
spawn(0)
@@ -126,10 +126,10 @@
Bump(atom/A)
if(ismob(A) && (ishuman(A) || ismonkey(A)))
src.target = A
target = A
set_attack()
else if(ismob(A))
src.loc = A:loc
loc = A:loc
temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
@@ -214,7 +214,7 @@
view = 1
else
view = viewrange-2
for (var/mob/living/carbon/C in range(view,src.loc))
for (var/mob/living/carbon/C in range(view,loc))
if (C.stat == 2 || isalien(C) || C.alien_egg_flag || !can_see(src,C,viewrange))
continue
if(C:stunned || C:paralysis || C:weakened)
@@ -240,27 +240,28 @@
if(can_see(src,target,viewrange))
if(distance <= 1 && (!lamarr || prob(20)))
for(var/mob/O in viewers(world.view,src))
O.show_message("\red <B>[src.target] has been leapt on by [lamarr ? src.name : "the alien"]!</B>", 1, "\red You hear someone fall", 2)
O.show_message("\red <B>[target] has been leapt on by [lamarr ? name : "the alien"]!</B>", 1, "\red You hear someone fall", 2)
if (!lamarr)
target:take_overall_damage(5)
if(prob(70))
target:paralysis = max(target:paralysis, 5)
src.loc = target.loc
loc = target.loc
if(!target.alien_egg_flag && ( ishuman(target) || ismonkey(target) ) )
if (!lamarr)
target.alien_egg_flag = 1
var/mob/trg = target
src.death()
if(trg.virus)
trg.virus.cure(0)
trg.contract_disease(new /datum/disease/alien_embryo(0))
death()
if(trg.virus)//Viruses are stored in a global database.
trg.virus.cure(0)//You need to either cure() or del() them to stop their processing.
trg.contract_disease(new /datum/disease/alien_embryo(0))//So after that you need to infect the target anew.
if(target.virus)//If they actually get infected. They may not.
target.alien_egg_flag = 1//We finally set their flag to 1.
return
else
sleep(50)
else
set_null()
spawn(cycle_pause) src.process()
spawn(cycle_pause) process()
return
step_towards(src,get_step_towards2(src , target))
@@ -270,7 +271,7 @@
path_attack(target)
if(!path_target.len)
set_null()
spawn(cycle_pause) src.process()
spawn(cycle_pause) process()
return
else
var/turf/next = path_target[1]
@@ -279,23 +280,23 @@
path_attack(target)
if(!path_target.len)
src.frustration += 5
frustration += 5
else
next = path_target[1]
path_target -= next
step_towards(src,next)
quick_move = 1
if (get_dist(src, src.target) >= distance) src.frustration++
else src.frustration--
if (get_dist(src, target) >= distance) frustration++
else frustration--
if(frustration >= 35 || lamarr) set_null()
if(quick_move)
spawn(cycle_pause/2)
src.process()
process()
else
spawn(cycle_pause)
src.process()
process()
proc/idle()
set background = 1
@@ -303,7 +304,7 @@
if(state != 2 || !alive || target) return
if(locate(/obj/alien/weeds) in src.loc && health < maxhealth)
if(locate(/obj/alien/weeds) in loc && health < maxhealth)
health++
spawn(cycle_pause) idle()
return
@@ -318,7 +319,7 @@
if(!path_idle.len)
trg_idle = null
set_idle()
spawn(cycle_pause) src.idle()
spawn(cycle_pause) idle()
return
else
var/obj/alien/weeds/W = null
@@ -326,7 +327,7 @@
var/list/the_weeds = new/list()
find_weeds:
for(var/obj/alien/weeds/weed in range(viewrange,src.loc))
for(var/obj/alien/weeds/weed in range(viewrange,loc))
if(!can_see(src,weed,viewrange)) continue
for(var/atom/A in get_turf(weed))
if(A.density) continue find_weeds
@@ -338,11 +339,11 @@
path_idle(W)
if(!path_idle.len)
trg_idle = null
spawn(cycle_pause) src.idle()
spawn(cycle_pause) idle()
return
else
for(var/mob/living/carbon/alien/humanoid/H in range(1,src))
spawn(cycle_pause) src.idle()
spawn(cycle_pause) idle()
return
step(src,pick(cardinal))
@@ -368,7 +369,7 @@
path_idle(trg_idle)
if(!path_idle.len)
spawn(cycle_pause) src.idle()
spawn(cycle_pause) idle()
return
else
next = path_idle[1]
@@ -384,18 +385,18 @@
idle()
proc/path_idle(var/atom/trg)
path_idle = AStar(src.loc, get_turf(trg), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_idle = AStar(loc, get_turf(trg), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_idle = reverselist(path_idle)
proc/path_attack(var/atom/trg)
target = trg
path_target = AStar(src.loc, target.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_target = AStar(loc, target.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, null, null)
path_target = reverselist(path_target)
proc/death()
if(!alive) return
src.alive = 0
alive = 0
density = 0
icon_state = "facehugger_l"
set_null()
@@ -403,6 +404,6 @@
O.show_message("\red <B>[src] curls up into a ball!</B>", 1)
proc/healthcheck()
if (src.health <= 0)
src.death()
if (health <= 0)
death()
+3 -6
View File
@@ -32,17 +32,14 @@
switch(severity)
if(1.0)
health-=50
healthcheck()
if(2.0)
health-=50
healthcheck()
if(3.0)
if (prob(50))
health-=50
healthcheck()
else
health-=25
healthcheck()
healthcheck()
return
/obj/alien/resin/blob_act()
@@ -64,7 +61,7 @@
tforce = 10
else
tforce = AM:throwforce
playsound(src.loc, 'attackblob.ogg', 100, 1)
playsound(loc, 'attackblob.ogg', 100, 1)
health = max(0, health - tforce)
healthcheck()
..()
@@ -121,7 +118,7 @@
var/aforce = W.force
health = max(0, health - aforce)
playsound(src.loc, 'attackblob.ogg', 100, 1)
playsound(loc, 'attackblob.ogg', 100, 1)
healthcheck()
..()
return
+9 -9
View File
@@ -1,12 +1,12 @@
/obj/alien/weeds/New()
..()
if(istype(src.loc, /turf/space))
if(istype(loc, /turf/space))
del(src)
return
src.icon_state = pick("weeds", "weeds1", "weeds2")
icon_state = pick("weeds", "weeds1", "weeds2")
spawn(rand(150,300))
if(src)
src.Life()
Life()
return
/obj/alien/weeds/proc/Life()
@@ -20,8 +20,8 @@
Alien plants should do something if theres a lot of poison
if(U.poison> 200000)
src.health -= round(U.poison/200000)
src.update()
health -= round(U.poison/200000)
update()
return
*/
if (istype(U, /turf/space))
@@ -58,7 +58,7 @@ Alien plants should do something if theres a lot of poison
return
/obj/alien/weeds/attackby(var/obj/item/weapon/W, var/mob/user)
src.visible_message("\red <B>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]")
visible_message("\red <B>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]")
var/damage = W.force / 4.0
@@ -67,10 +67,10 @@ Alien plants should do something if theres a lot of poison
if(WT.welding)
damage = 15
playsound(src.loc, 'Welder.ogg', 100, 1)
playsound(loc, 'Welder.ogg', 100, 1)
src.health -= damage
src.healthcheck()
health -= damage
healthcheck()
/obj/alien/weeds/proc/healthcheck()
if(health <= 0)
+8 -7
View File
@@ -486,7 +486,7 @@
//SYNDICATE FUNCTIONS===================================
if("Door")
if("Toggle Door")
if(!isnull(cartridge) && cartridge.access_remote_door)
for(var/obj/machinery/door/poddoor/M in machines)
if(M.id == cartridge.remote_door_id)
@@ -536,12 +536,13 @@
//pAI FUNCTIONS===================================
if("pai")
if(href_list["option"] == "1") // Configure pAI device
pai.attack_self(U)
if(href_list["option"] == "2") // Eject pAI device
var/turf/T = get_turf_or_move(src.loc)
if(T)
pai.loc = T
switch(href_list["option"])
if("1") // Configure pAI device
pai.attack_self(U)
if("2") // Eject pAI device
var/turf/T = get_turf_or_move(src.loc)
if(T)
pai.loc = T
//LINK FUNCTIONS===================================
+4 -6
View File
@@ -63,21 +63,19 @@
dat += "<b>AI nonfunctional</b>"
else
if (!src.flush)
dat += {"<A href='byond://?src=\ref[src];choice=Wipe;user=\ref[user]'>Wipe AI</A>"}
dat += {"<A href='byond://?src=\ref[src];choice=Wipe'>Wipe AI</A>"}
else
dat += "<b>Wipe in progress</b>"
dat += "<br>"
dat += {"<a href='byond://?src=\ref[src];choice=Wireless;user=\ref[user]'>[A.control_disabled ? "Enable" : "Disable"] Wireless Activity</a>"}
dat += {"<a href='byond://?src=\ref[src];choice=Wireless'>[A.control_disabled ? "Enable" : "Disable"] Wireless Activity</a>"}
dat += "<br>"
dat += {"<a href='byond://?src=\ref[src];choice=Close;user=\ref[user]'> Close</a>"}
dat += {"<a href='byond://?src=\ref[src];choice=Close'> Close</a>"}
user << browse(dat, "window=aicard")
onclose(user, "aicard")
return
Topic(href, href_list)
/*Let's define the user. It's safer to do it this way, rather than defaulting to usr.
For very long menu lines, usr is probably a lot more convenient.*/
var/mob/U = href_list["user"]
var/mob/U = usr
if (!in_range(src, U)||U.machine!=src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else).
U << browse(null, "window=aicard")
U.machine = null