Adjustments to alien acid. Aliens should no longer see invalid targets as one of their acid options when using the verb. Right clicking should give the invalid target message when appropriate.

Made a bunch of other things acid proof. Bullets, lasers, runes, etc.
Aliens should no longer emote as male when they are gender neuter. Or maybe plural, who knows.
Tweaked respawn character verb. Hopefully it'll work on the live server now.
Minor Strike Team fix.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@689 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
noisomehollow@lycos.com
2010-12-22 02:54:52 +00:00
parent 0525c4aa69
commit d681b03581
16 changed files with 96 additions and 61 deletions

View File

@@ -46,8 +46,8 @@ obj
//Icon for fire on turfs, also helps for nurturing small fires until they are full tile
anchored = 1
mouse_opacity = 0
unacidable = 1//So you can't melt fire with acid.
//luminosity = 3

View File

@@ -40,7 +40,7 @@
anchored = 1
layer = 99
mouse_opacity = 0
unacidable = 1
unacidable = 1//Just to be sure.
/obj/admins
name = "admins"
@@ -56,7 +56,7 @@
desc = "FUCK FUCK FUCK AAAHHH"
icon_state = "bhole2"
opacity = 0
unacidable = 1 //well, if you got that close, you're fucked anyway, but...
unacidable = 1
density = 0
anchored = 1
var/datum/effects/system/harmless_smoke_spread/smoke
@@ -66,6 +66,7 @@
/obj/beam
name = "beam"
unacidable = 1//Just to be sure.
/obj/beam/a_laser
name = "a laser"
@@ -111,6 +112,7 @@
icon = 'projectiles.dmi'
icon_state = "bullet"
density = 1
unacidable = 1//Just to be sure.
var/yo = null
var/xo = null
var/current = null
@@ -512,6 +514,7 @@
name = "manifest"
icon = 'screen1.dmi'
icon_state = "x"
unacidable = 1//Just to be sure.
/obj/morgue
name = "morgue"
@@ -578,7 +581,7 @@
icon = 'stationobjs.dmi'
icon_state = "portal"
density = 1
unacidable = 1
unacidable = 1//Can't destroy energy portals.
var/failchance = 5
var/obj/item/target = null
var/creator = null
@@ -706,6 +709,7 @@
desc = "A display case for prized possessions."
density = 1
anchored = 1
unacidable = 1//Dissolving the case would also delete the gun.
var/health = 30
var/occupied = 1
var/destroyed = 0

View File

@@ -6,6 +6,7 @@
anchored = 1.0
opacity = 0
density = 1
unacidable = 1
/client/proc/forcewall()

View File

@@ -53,7 +53,7 @@ However people seem to like it for some reason.
icon_state = "Singularity"
anchored = 1
density = 1
// unacidable = 1 //oh the hilarity.
unacidable = 1 //Don't comment this out.
var/active = 0
var/energy = 10
var/Dtime = null

View File

@@ -33,6 +33,7 @@ var/runedec = 0
icon = 'rune.dmi'
icon_state = "1"
var/visibility = 0
unacidable = 1
var

View File

@@ -16,6 +16,7 @@
layer = 5.0
density = 1
anchored = 0
unacidable = 1 //Creature is not harmed by acid.
var/state = 0

View File

@@ -1,8 +1,5 @@
/obj/alien/acid/proc/tick()
ticks += 1
if(target.unacidable)
del(src)
return
for(var/mob/O in hearers(src, null))
O.show_message("\green <B>[src.target] sizzles and begins to melt under the bubbling mess of acid!</B>", 1)
if(prob(ticks*10))

View File

@@ -2,7 +2,7 @@
name = "alien thing"
desc = "theres something alien about this"
icon = 'alien.dmi'
unacidable = 1 //alien acid don't melts alien things...
unacidable = 1 //Aliens won't ment their own.
/obj/alien/egg
desc = "It looks like a weird egg"
@@ -39,7 +39,7 @@
density = 1
opacity = 1
anchored = 1
unacidable = 0 //...except for resin "wall" since it can block way.
unacidable = 0 //So aliens can destroy their own walls if they need to.
var/health = 20

View File

@@ -10,6 +10,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
name = "effects"
icon = 'effects.dmi'
mouse_opacity = 0
unacidable = 1//So effects are not targeted by alien acid.
flags = TABLEPASS
/obj/effects/water

View File

@@ -5,7 +5,7 @@
desc = "A glass lab container for storing interesting creatures."
density = 1
anchored = 1
unacidable = 1
unacidable = 1//Dissolving the case would also delete Lamarr
var/health = 30
var/occupied = 1
var/destroyed = 0

View File

@@ -7,7 +7,7 @@
layer = 5.0
density = 1
anchored = 0
unacidable = 1
unacidable = 1//While not technically mobs, these objects should not be affected by alien acid.
var/state = 0 //0 = null, 1 = attack, 2 = idle

View File

@@ -290,9 +290,9 @@ They spawn as an assistant but there is no announcement. /N */
var/GKEY = input
var/GNAME = "none"
var/mob/dead/observer/GDEL //to properly delete the mob later on.
var/mob/dead/observer/GDEL //To properly delete the mob later on.
for(var/mob/dead/observer/G in world)
if(G.key==input)
if(G.key==input||GKEY)
GDEL = G
GNAME = G.real_name
else
@@ -321,7 +321,7 @@ They spawn as an assistant but there is no announcement. /N */
new_character.loc = spawn_here
new_character.real_name = GNAME
message_admins("\blue [key_name_admin(usr)] has respawned [GKEY] as [new_character.name].", 1) //Here so it doesn't null name if an admin re-spawns themselves.
message_admins("\blue [key_name_admin(usr)] has respawned [GKEY] as [new_character.name].", 1) //Here so it doesn't null client if an admin re-spawns themselves.
new_character.key = GKEY
// preferences.copy_to(new_character)
new_character.dna.ready_dna(new_character)

View File

@@ -58,12 +58,12 @@ var/global/sent_strike_team = 0
else
new_commando.age = rand(35,45)
new_commando.b_type = pick("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
new_commando.dna.ready_dna(new_commando) //creates DNA
new_commando.dna.ready_dna(new_commando) //Creates DNA
//Creates mind stuff.
new_commando.mind = new
new_commando.mind.current = new_commando
new_commando.mind.assigned_role = "Death Commando"
new_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")
new_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")//So they don't forget their code or mission.
new_commando.mind.store_memory("<B>Mission:</B> \red [input].")
del(STARTLOC)
@@ -107,8 +107,8 @@ var/global/sent_strike_team = 0
GUN.bullets = 7
new_commando.equip_if_possible(GUN, new_commando.slot_s_store)
// new_commando.equip_if_possible(new /obj/item/weapon/gun/energy/pulse_rifle(new_commando), new_commando.slot_l_hand)
//Commented out because Commandos now have their rifles spawn in front of them, along with operation manuals.
//Useful for copy pasta since I'm lazy.
/*Commented out because Commandos now have their rifles spawn in front of them, along with operation manuals.
Useful for copy pasta since I'm lazy.*/
var/obj/item/weapon/card/id/W = new(new_commando)
W.name = "[new_commando.real_name]'s ID Card"
@@ -120,8 +120,8 @@ var/global/sent_strike_team = 0
var/list/candidates = list() // Picks a random ghost for the role. Mostly a copy of alien burst code.
for(var/mob/dead/observer/G in world)
if(G.client)
// if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //!G.client.holder means that whoever called/has the proc won't be added to the list.
if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in.
if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //Whoever called/has the proc won't be added to the list.
// if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in. Good for testing.
candidates.Add(G)
if(candidates.len)
var/mob/dead/observer/G = pick(candidates)

View File

@@ -1,16 +1,17 @@
/*NOTE:
Put in power that will lay a facehugger egg but cost a lot of plasma, 250 or something?
Also perhaps only queens can do that?
/*NOTES:
There are several problems with alien powers right now. I am currently trying to fix the dissolve verb so it makes a lot more sense.
Alien spit is ridiculous and needs to be toned down. It homes in on targets when it should probably work
more like a taser shot but with continuous toxin damage to the target if they are hit.
Invisibility works well but 30 seconds is too long. 15 would be good considering it doesn't cost much and makes the alien a lot more
robust (can't be canceled by anything short of thermals or a superpower).
Vent crawl shouldn't transport the alien to the Prison Station or back. The list should also be in some order since right now it's
often difficult to pick the right destination.
Resin wall should also apply to mobs so that aliens can envelope them in resin (effectively paralyze them) to successfully hatch more
aliens. Perhaps it should also prevent the target from suiciding.
All I can think of right now./N
*/
/mob/living/carbon/alien/humanoid/verb/invis()
set name = "Invisibility (50)"
set desc = "Makes you invisible for 30 seconds"
@@ -38,7 +39,7 @@ Also perhaps only queens can do that?
set category = "Alien"
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
if(src.toxloss >= 25)
src.toxloss -= 25
@@ -88,7 +89,7 @@ Also perhaps only queens can do that?
set category = "Alien"
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
if(src.toxloss >= 100)
src.toxloss -= 100
@@ -103,11 +104,11 @@ Also perhaps only queens can do that?
/mob/living/carbon/alien/humanoid/verb/call_to()
set name = "Call facehuggers (5)"
set desc = "Makes all nearby facehuggers follow you."
set desc = "Makes all nearby facehuggers follow you"
set category = "Alien"
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
if(src.toxloss >= 5)
@@ -180,11 +181,11 @@ Also perhaps only queens can do that?
/mob/living/carbon/alien/humanoid/verb/evolve() // -- TLE
set name = "Evolve (500)"
set desc = "Produce an interal egg sac capable of spawning children."
set desc = "Produce an interal egg sac capable of spawning children"
set category = "Alien"
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
if(!src.toxloss)
@@ -203,7 +204,7 @@ Also perhaps only queens can do that?
/mob/living/carbon/alien/humanoid/verb/resinwall() // -- TLE
set name = "Shape Resin Wall (200)"
set desc = "Produce a wall of resin that blocks entry and line of sight."
set desc = "Produce a wall of resin that blocks entry and line of sight"
set category = "Alien"
if(src.stat)
@@ -224,13 +225,13 @@ Also perhaps only queens can do that?
/mob/living/carbon/alien/humanoid/proc/ventcrawl() // -- TLE
set name = "Crawl through Vent"
set desc = "Enter an air vent and appear at a random one."
set desc = "Enter an air vent and appear at a random one"
set category = "Alien"
// if(!istype(V,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent))
// return
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
var/vent_found = 0
for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
@@ -288,31 +289,59 @@ Also perhaps only queens can do that?
for(var/obj/alien/facehugger/F in huggers)
F.loc = src.loc
/mob/living/carbon/alien/humanoid/verb/corrode(obj/O as obj in view(1)) // -- TLE
/*Xenos now have a proc and a verb for drenching stuff in acid. I couldn't get them to work right when combined so this was the next best solution.
The first proc defines the acid throw function while the other two work in the game itself. Probably a good idea to revise this later.
I kind of like the right click only--the window version can get a little confusing. Perhaps something telling the alien they need to right click?
/N*/
/obj/proc/acid()
usr.toxloss -= 200
var/obj/alien/acid/A = new(src.loc)
A.target = src
for(var/mob/M in viewers(src, null))
M.show_message(text("\green <B>[src] vomits globs of vile stuff all over [src]!</B>"), 1)
A.tick()
/mob/living/carbon/alien/humanoid/proc/corrode_target() //Aliens only see items on the list of objects that they can actually spit on./N
set name = "Spit Corrosive Acid (200)"
set desc = "Drench an object in acid, destroying it over time."
set category = "Alien"
var/obj/A
if(src.stat)
src << "You must be concious to do this"
src << "You must be concious to do this."
return
var/list/xeno_target
xeno_target = list("ABORT COMMAND")
for(var/obj/O in view(1))
if(!O.unacidable)
xeno_target.Add(O)
A = input("Corrode which target?", "Targets", A) in xeno_target
if(A == "ABORT COMMAND")
return
if(src.toxloss < 200)
src << "Not enough plasma."
return
if(A in view(1))//Another check to see if the item is in range. So the alien does not run off with the window open.
A.acid()
else
src << "Target is too far away."
return
/mob/living/carbon/alien/humanoid/verb/corrode(obj/O as anything in view(1)) //If they right click to corrode, an error will flash if its an invalid target./N
set name = "Spit Corrosive Acid (200)"
set desc = "Drench an object in acid, destroying it over time."
if(!istype(O, /obj))
return
if(O.unacidable) //noize, don't fucking touch this and learn, why algorithms must be universal when possible (here it IS possible)
src << "You cannot spit acid over this."
return //also, if you want list of unacidables - search("unacidable = 1". all files), key_press(F3).
/*if(range(O, src) > 1)
src << "That's too far away!"
return*/
if(src.stat)
src << "You must be concious to do this."
return
if(src.toxloss < 200)
src << "You don't have enough plasma."
src << "Not enough plasma."
return
if(O.unacidable) //So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid.
src << "Cannot destroy this object."
return
else
src.toxloss -= 200
var/obj/alien/acid/A = new(O.loc)
A.target = O
for(var/mob/M in viewers(src, null))
M.show_message(text("\green <B>[src] vomits globs of vile stuff all over [O]!</B>"), 1)
A.tick()
O.acid()

View File

@@ -34,7 +34,7 @@
message = "<B>The [src.name]</B> roars."
m_type = 2
if("tail")
message = "<B>The [src.name]</B> waves his tail."
message = "<B>The [src.name]</B> waves its tail."
m_type = 1
if("gasp")
message = "<B>The [src.name]</B> gasps."
@@ -56,7 +56,7 @@
message = "<B>The [src.name]</B> moans!"
m_type = 2
if("nod")
message = "<B>The [src.name]</B> nods his head."
message = "<B>The [src.name]</B> nods its head."
m_type = 1
if("sit")
message = "<B>The [src.name]</B> sits down."
@@ -79,11 +79,11 @@
message = "<B>The [src.name]</B> rolls."
m_type = 1
if("shake")
message = "<B>The [src.name]</B> shakes his head."
message = "<B>The [src.name]</B> shakes its head."
m_type = 1
if("gnarl")
if (!muzzled)
message = "<B>The [src.name]</B> gnarls and shows his teeth.."
message = "<B>The [src.name]</B> gnarls and shows its teeth.."
m_type = 2
if("jump")
message = "<B>The [src.name]</B> jumps!"

View File

@@ -55,6 +55,7 @@ to clean it up, or just beat the shit out of it (which takes ages).
/mob/living/carbon/alien/humanoid/New()
spawn (1)
src.verbs += /mob/living/carbon/alien/humanoid/proc/ventcrawl // Give only normal aliens ventcrawling -- TLE
src.verbs += /mob/living/carbon/alien/humanoid/proc/corrode_target //So aliens propely get two acid verbs. /N
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
R.my_atom = src