diff --git a/code/FEA/FEA_fire.dm b/code/FEA/FEA_fire.dm
index 6eec1fc8271..582a65f74cd 100644
--- a/code/FEA/FEA_fire.dm
+++ b/code/FEA/FEA_fire.dm
@@ -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
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index e9029aabccb..984fa33c3a9 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -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
diff --git a/code/game/gamemodes/wizard/spell6.dm b/code/game/gamemodes/wizard/spell6.dm
index 6df673c0b61..592a8088ce8 100644
--- a/code/game/gamemodes/wizard/spell6.dm
+++ b/code/game/gamemodes/wizard/spell6.dm
@@ -6,6 +6,7 @@
anchored = 1.0
opacity = 0
density = 1
+ unacidable = 1
/client/proc/forcewall()
diff --git a/code/game/machinery/singularity.dm b/code/game/machinery/singularity.dm
index da23b4736fc..8cb9ac01d9d 100644
--- a/code/game/machinery/singularity.dm
+++ b/code/game/machinery/singularity.dm
@@ -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
diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm
index 0d05fc30d15..a21d1a32d5b 100644
--- a/code/game/magic/cultist/ritual.dm
+++ b/code/game/magic/cultist/ritual.dm
@@ -33,6 +33,7 @@ var/runedec = 0
icon = 'rune.dmi'
icon_state = "1"
var/visibility = 0
+ unacidable = 1
var
diff --git a/code/game/magic/magicmonster.dm b/code/game/magic/magicmonster.dm
index f3c259465d3..634ec20b092 100644
--- a/code/game/magic/magicmonster.dm
+++ b/code/game/magic/magicmonster.dm
@@ -16,6 +16,7 @@
layer = 5.0
density = 1
anchored = 0
+ unacidable = 1 //Creature is not harmed by acid.
var/state = 0
diff --git a/code/game/objects/alien/acid.dm b/code/game/objects/alien/acid.dm
index ceeb9e2634b..bd2bc9e8c3b 100644
--- a/code/game/objects/alien/acid.dm
+++ b/code/game/objects/alien/acid.dm
@@ -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 [src.target] sizzles and begins to melt under the bubbling mess of acid!", 1)
if(prob(ticks*10))
diff --git a/code/game/objects/alien/defines.dm b/code/game/objects/alien/defines.dm
index 528e1e6c950..694e591dc64 100644
--- a/code/game/objects/alien/defines.dm
+++ b/code/game/objects/alien/defines.dm
@@ -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
diff --git a/code/game/objects/effect_system.dm b/code/game/objects/effect_system.dm
index 607237c501a..22b7126abfd 100644
--- a/code/game/objects/effect_system.dm
+++ b/code/game/objects/effect_system.dm
@@ -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
diff --git a/code/game/objects/lamarr.dm b/code/game/objects/lamarr.dm
index 884f8cc3272..87fdbafdca2 100644
--- a/code/game/objects/lamarr.dm
+++ b/code/game/objects/lamarr.dm
@@ -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
diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm
index a4eeb015726..9b83e8973c3 100644
--- a/code/game/objects/livestock.dm
+++ b/code/game/objects/livestock.dm
@@ -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
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index e91461cd157..7c7ed5923d1 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -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)
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index e0430bc00c7..eb6ee7532a4 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -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("Nuke Code: \red [nuke_code].")
+ new_commando.mind.store_memory("Nuke Code: \red [nuke_code].")//So they don't forget their code or mission.
new_commando.mind.store_memory("Mission: \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)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index 3dbc8a833a5..65c3202d180 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -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 [src] vomits globs of vile stuff all over [src]!"), 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 [src] vomits globs of vile stuff all over [O]!"), 1)
- A.tick()
\ No newline at end of file
+ O.acid()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm
index 6d1de65b604..0c371f617b8 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm
@@ -34,7 +34,7 @@
message = "The [src.name] roars."
m_type = 2
if("tail")
- message = "The [src.name] waves his tail."
+ message = "The [src.name] waves its tail."
m_type = 1
if("gasp")
message = "The [src.name] gasps."
@@ -56,7 +56,7 @@
message = "The [src.name] moans!"
m_type = 2
if("nod")
- message = "The [src.name] nods his head."
+ message = "The [src.name] nods its head."
m_type = 1
if("sit")
message = "The [src.name] sits down."
@@ -79,11 +79,11 @@
message = "The [src.name] rolls."
m_type = 1
if("shake")
- message = "The [src.name] shakes his head."
+ message = "The [src.name] shakes its head."
m_type = 1
if("gnarl")
if (!muzzled)
- message = "The [src.name] gnarls and shows his teeth.."
+ message = "The [src.name] gnarls and shows its teeth.."
m_type = 2
if("jump")
message = "The [src.name] jumps!"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 84ff7b6660e..3e58c490d4f 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -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