mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-25 04:57:47 +01:00
#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:
@@ -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."
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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===================================
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user