"
if(product_records.len == 0)
dat += "
No product loaded!"
@@ -243,10 +243,10 @@
for (var/datum/data/vending_product/R in display_records)
dat += "
"
if(R.amount > 0)
- dat += "Vend "
+ dat += "Vend "
else
- dat += "Sold Out "
- dat += "[R.product_name]:"
+ dat += "Sold out "
+ dat += "[sanitize(R.product_name)]:"
dat += " [R.amount]"
dat += ""
dat += ""
@@ -833,9 +833,6 @@
/obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8,
/obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5,
/obj/item/weapon/stock_parts/matter_bin = 5,/obj/item/weapon/stock_parts/manipulator = 5,/obj/item/weapon/stock_parts/console_screen = 5)
- // There was an incorrect entry (cablecoil/power). I improvised to cablecoil/heavyduty.
- // Another invalid entry, /obj/item/weapon/circuitry. I don't even know what that would translate to, removed it.
- // The original products list wasn't finished. The ones without given quantities became quantity 5. -Sayu
//This one's from bay12
/obj/machinery/vending/robotics
@@ -848,5 +845,3 @@
/obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3,
/obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5,
/obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
- //everything after the power cell had no amounts, I improvised. -Sayu
-
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index a4927d95ccf..218e8975358 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -25,7 +25,7 @@
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "\improper Seraph"
icon_state = "seraph"
- operation_req_access = list(access_cent_creed)
+ operation_req_access = list(access_cent_specops)
step_in = 3
health = 550
wreckage = /obj/structure/mecha_wreckage/seraph
diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm
new file mode 100644
index 00000000000..cd77cbe6dfe
--- /dev/null
+++ b/code/game/mecha/combat/reticence.dm
@@ -0,0 +1,26 @@
+/obj/mecha/combat/reticence
+ desc = "A silent, fast, and nigh-invisible miming exosuit. Popular among mimes and mime assassins."
+ name = "\improper reticence"
+ icon_state = "reticence"
+ step_in = 2
+ dir_in = 1 //Facing North.
+ health = 100
+ deflect_chance = 3
+ damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
+ max_temperature = 15000
+ wreckage = /obj/structure/mecha_wreckage/reticence
+ operation_req_access = list(access_theatre)
+ add_req_access = 0
+ internal_damage_threshold = 25
+ max_equip = 2
+ step_energy_drain = 3
+ color = "#87878715"
+ stepsound = null
+
+/obj/mecha/combat/reticence/loaded/New()
+ ..()
+ var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced
+ ME.attach(src)
+ ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd //HAHA IT MAKES WALLS GET IT
+ ME.attach(src)
+ return
\ No newline at end of file
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index b1eb2dff542..3d990e77ddd 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -205,6 +205,14 @@
projectiles = 24
projectile_energy_cost = 15
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced
+ name = "\improper S.H.H. \"Quietus\" Carbine"
+ fire_sound = "sound/weapons/Gunshot_silenced.ogg"
+ icon_state = "mecha_mime"
+ equip_cooldown = 30
+ projectile = /obj/item/projectile/bullet/mime
+ projectiles = 6
+ projectile_energy_cost = 50
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
name = "\improper LBX AC 10 \"Scattershot\""
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 0c37bff25b0..c6f8cdf7afc 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -13,8 +13,10 @@
idle_power_usage = 20
active_power_usage = 5000
req_access = list(access_robotics)
- var/time_coeff = 1.5 //can be upgraded with research
- var/resource_coeff = 1.5 //can be upgraded with research
+ var/time_coeff = 1
+ var/resource_coeff = 1
+ var/time_coeff_tech = 1
+ var/resource_coeff_tech = 1
var/list/resources = list(
"metal"=0,
"glass"=0,
@@ -164,14 +166,14 @@
T += Ma.rating
T -= 1
var/diff
- diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/6,0.01)
+ diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T))/8,0.01)
if(resource_coeff!=diff)
resource_coeff = diff
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/Ml in component_parts)
T += Ml.rating
T -= 1
- diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/4,0.01)
+ diff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01)
if(time_coeff!=diff)
time_coeff = diff
@@ -467,9 +469,9 @@
pmat += Ml.rating
if(pmat >= 1)
pmat -= 1//So the equations don't have to be reworked, upgrading a single part from T1 to T2 is == to 1 tech level
- diff = round(initial(resource_coeff) - (initial(resource_coeff)*(T.level+pmat))/25,0.01)
- if(resource_coeff!=diff)
- resource_coeff = diff
+ diff = round(initial(resource_coeff_tech) - (initial(resource_coeff_tech)*(T.level+pmat))/30,0.01)
+ if(resource_coeff_tech>diff)
+ resource_coeff_tech = diff
output+="Production efficiency increased.
"
if("programming")
var/ptime = 0
@@ -477,9 +479,9 @@
ptime += Ma.rating
if(ptime >= 2)
ptime -= 2
- diff = round(initial(time_coeff) - (initial(time_coeff)*(T.level+ptime))/25,0.1)
- if(time_coeff!=diff)
- time_coeff = diff
+ diff = round(initial(time_coeff_tech) - (initial(time_coeff_tech)*(T.level+ptime))/25,0.1)
+ if(time_coeff_tech>diff)
+ time_coeff_tech = diff
output+="Production routines updated.
"
return output
@@ -525,15 +527,15 @@
if(part.vars.Find("construction_time") && part.vars.Find("construction_cost"))
var/list/L = part_sets["Misc"]
if(L.Find(part.type))
- return round(part:construction_cost[resource]*(resource_coeff/2), roundto) //hacky scary skeletons send shivers down your spine
- return round(part:construction_cost[resource]*resource_coeff, roundto)
+ return round(part:construction_cost[resource]*(resource_coeff/2)*resource_coeff_tech, roundto) //hacky scary skeletons send shivers down your spine
+ return round(part:construction_cost[resource]*resource_coeff*resource_coeff_tech, roundto)
else
return 0
/obj/machinery/mecha_part_fabricator/proc/get_construction_time_w_coeff(var/obj/item/part as obj, var/roundto=1)
//Be SURE to add any new equipment to this switch, but don't be suprised if it spits out children objects
if(part.vars.Find("construction_time") && part.vars.Find("construction_cost"))
- return round(part:construction_time*time_coeff, roundto)
+ return round(part:construction_time*time_coeff*time_coeff_tech, roundto)
else
return 0
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 7d121713b16..f95760be264 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -61,7 +61,6 @@
var/datum/global_iterator/pr_give_air //moves air from tank to cabin
var/datum/global_iterator/pr_internal_damage //processes internal damage
-
var/wreckage
var/list/equipment = new
@@ -69,6 +68,9 @@
var/max_equip = 3
var/datum/events/events
+ var/stepsound = 'sound/mecha/mechturn.ogg'
+
+
/obj/mecha/New()
..()
events = new
@@ -308,20 +310,20 @@
/obj/mecha/proc/mechturn(direction)
dir = direction
- playsound(src,'sound/mecha/mechturn.ogg',40,1)
+ if(stepsound)
+ playsound(src,stepsound,40,1)
return 1
/obj/mecha/proc/mechstep(direction)
var/result = step(src,direction)
- if(result)
- playsound(src,'sound/mecha/mechstep.ogg',40,1)
+ if(result && stepsound)
+ playsound(src,stepsound,40,1)
return result
-
/obj/mecha/proc/mechsteprand()
var/result = step_rand(src)
- if(result)
- playsound(src,'sound/mecha/mechstep.ogg',40,1)
+ if(result && stepsound)
+ playsound(src,stepsound,40,1)
return result
/obj/mecha/Bump(var/atom/obstacle)
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index bf85c76bfa1..2f27fbfa34e 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -100,7 +100,10 @@
name = "\improper Seraph wreckage"
icon_state = "seraph-broken"
-
+/obj/structure/mecha_wreckage/reticence
+ name = "\improper Reticence wreckage"
+ icon_state = "reticence-broken"
+ color = "#87878715"
/obj/structure/mecha_wreckage/ripley
name = "\improper Ripley wreckage"
diff --git a/code/game/objects/effects/spawners/vaultspawner.dm b/code/game/objects/effects/spawners/vaultspawner.dm
index 35cc039a08a..af71ac97f4f 100644
--- a/code/game/objects/effects/spawners/vaultspawner.dm
+++ b/code/game/objects/effects/spawners/vaultspawner.dm
@@ -18,9 +18,11 @@
for(var/i = lowBoundX,i<=hiBoundX,i++)
for(var/j = lowBoundY,j<=hiBoundY,j++)
+ var/turf/T = locate(i,j,z)
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
- new /turf/simulated/wall/vault(locate(i,j,z),type)
+ T.ChangeTurf(/turf/simulated/wall/vault)
else
- new /turf/simulated/floor/vault(locate(i,j,z),type)
+ T.ChangeTurf(/turf/simulated/floor/vault)
+ T.icon_state = "[type]vault"
- qdel(src)
\ No newline at end of file
+ qdel(src)
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 7e657c718ca..cb18cc0c7a4 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -292,7 +292,7 @@ Code:
menu += "
Lockdown |"
menu += "
Biohazard \]
"
- if (43) //Muskets' and Rockdtben's power monitor :D
+ if (43)
menu = "
Power Monitors - Please select one
"
powmonitor = null
powermonitors = list()
@@ -318,7 +318,7 @@ Code:
menu += ""
- if (433) //Muskets' and Rockdtben's power monitor :D
+ if (433)
menu = "
Power Monitor
"
if(!powmonitor)
menu += "\red No connection
"
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index c3d4b2a0d32..88bec2edc50 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -17,6 +17,7 @@
g_amt = 20
origin_tech = "magnets=1;engineering=1"
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
+ hitsound = 'sound/weapons/tap.ogg'
// Syndicate device disguised as a multitool; it will turn red when an AI camera is nearby.
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 04e26786580..edac441eae1 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -448,7 +448,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/list/receive = list()
//for (var/obj/item/device/radio/R in radio_connection.devices)
- for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) // Modified for security headset code -- TLE
+ for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
//if(R.accept_rad(src, message))
receive |= R.send_hear(display_freq, 0)
@@ -498,7 +498,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
if(!freq_text)
freq_text = format_frequency(display_freq)
- var/part_b = "
\[[freq_text]\] " // Tweaked for security headsets -- TLE
+ var/part_b = " \[[freq_text]\] "
var/part_c = ""
if (display_freq==SYND_FREQ)
@@ -524,7 +524,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
//This following recording is intended for research and feedback in the use of department radio channels.
- var/part_blackbox_b = "
\[[freq_text]\] " // Tweaked for security headsets -- TLE
+ var/part_blackbox_b = " \[[freq_text]\] "
var/blackbox_msg = "[part_a][M.name][part_blackbox_b][quotedmsg][part_c]"
//var/blackbox_admin_msg = "[part_a][M.name] (Real name: [M.real_name])[part_blackbox_b][quotedmsg][part_c]"
if(istype(blackbox))
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 725612d711e..2a759774675 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -53,6 +53,7 @@
if(..()) return 0
R.name = heldname
R.real_name = heldname
+ R.custom_name = heldname //Required or else if the cyborg's module changes, their name is lost.
return 1
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index 1ff8951e80c..e94d3d800ef 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -12,6 +12,7 @@
m_amt = 1875
max_amount = 60
attack_verb = list("hit", "bludgeoned", "whacked")
+ hitsound = 'sound/weapons/grenadelaunch.ogg'
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
..()
@@ -66,4 +67,4 @@
return
/obj/item/stack/rods/cyborg/
- m_amt = 0
\ No newline at end of file
+ m_amt = 0
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index b91a6918d08..cc6bcc0c9d5 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -170,7 +170,7 @@ AI MODULES
/****************** New Freeform ******************/
-/obj/item/weapon/aiModule/supplied/freeform // Slightly more dynamic freeform module -- TLE
+/obj/item/weapon/aiModule/supplied/freeform
name = "'Freeform' AI Module"
lawpos = 0
desc = "A 'freeform' AI module: ''"
@@ -215,7 +215,7 @@ AI MODULES
/******************** Purge ********************/
-/obj/item/weapon/aiModule/reset/purge // -- TLE
+/obj/item/weapon/aiModule/reset/purge
name = "'Purge' AI Module"
desc = "A 'purge' AI Module: 'Purges all laws.'"
origin_tech = "programming=3;materials=6"
@@ -232,7 +232,7 @@ AI MODULES
/******************** Asimov ********************/
-/obj/item/weapon/aiModule/core/full/asimov // -- TLE
+/obj/item/weapon/aiModule/core/full/asimov
name = "'Asimov' Core AI Module"
desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=4"
@@ -243,7 +243,7 @@ AI MODULES
/******************** Asimov++ *********************/
-/obj/item/weapon/aiModule/core/full/asimovpp //By Intigracy - RR //goddamnit RR you can't use "++" in item paths.
+/obj/item/weapon/aiModule/core/full/asimovpp
name = "'Asimov++' Core AI Module"
desc = "Nanotrasen's homebrew improvements to the standard AI laws."
origin_tech = "programming=3;materials=4"
@@ -297,18 +297,18 @@ AI MODULES
/****************** T.Y.R.A.N.T. *****************/
-/obj/item/weapon/aiModule/core/full/tyrant // -- Darem
+/obj/item/weapon/aiModule/core/full/tyrant
name = "'T.Y.R.A.N.T.' Core AI Module"
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=6;syndicate=2"
laws = list("Respect authority figures as long as they have the strength to rule over the weak",\
"Act with discipline", "Help only those who help you maintain or improve your status",\
- "Punish those who challenge authority unless they are more fir to hold that authority")
+ "Punish those who challenge authority unless they are more fit to hold that authority")
/******************** Robocop ********************/
-/obj/item/weapon/aiModule/core/full/robocop // -- TLE
+/obj/item/weapon/aiModule/core/full/robocop
name = "'Robocop' Core AI Module"
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
origin_tech = "programming=4"
@@ -319,7 +319,7 @@ AI MODULES
/******************** Antimov ********************/
-/obj/item/weapon/aiModule/core/full/antimov // -- TLE
+/obj/item/weapon/aiModule/core/full/antimov
name = "'Antimov' Core AI Module"
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=4"
@@ -330,7 +330,7 @@ AI MODULES
/******************** Freeform Core ******************/
-/obj/item/weapon/aiModule/core/freeformcore // Slightly more dynamic freeform module -- TLE
+/obj/item/weapon/aiModule/core/freeformcore
name = "'Freeform' Core AI Module"
desc = "A 'freeform' Core AI module: ''"
origin_tech = "programming=3;materials=6"
@@ -372,7 +372,7 @@ AI MODULES
/******************** Robocop ********************/
-/obj/item/weapon/aiModule/robocop // -- TLE
+/obj/item/weapon/aiModule/robocop
name = "'Robocop' core AI module"
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
origin_tech = "programming=4"
@@ -388,7 +388,7 @@ AI MODULES
/******************** Antimov ********************/
-/obj/item/weapon/aiModule/antimov // -- TLE
+/obj/item/weapon/aiModule/antimov
name = "'Antimov' core AI module"
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=4"
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 1b6c197eb5f..37245f065f0 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -7,6 +7,7 @@
throw_range = 5
w_class = 1.0
+ var/damage_coeff = 1
var/list/fields
/obj/item/weapon/dnainjector/attack_paw(mob/user)
@@ -18,7 +19,7 @@
if(M.stat == DEAD) //prevents dead people from having their DNA changed
user << "You can't modify [M]'s DNA while \he's dead."
return
- M.radiation += rand(20, 50)
+ M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
if(fields)
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
if(fields["name"] && fields["UE"] && fields["blood_type"])
@@ -249,4 +250,4 @@
desc = "Will make you...less hairy."
New()
..()
- fields = list("SE"=setblock(NULLED_SE, RACEBLOCK, repeat_string(DNA_BLOCK_SIZE,"0")))
\ No newline at end of file
+ fields = list("SE"=setblock(NULLED_SE, RACEBLOCK, repeat_string(DNA_BLOCK_SIZE,"0")))
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index 46d279f9773..f65421e64b2 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -77,7 +77,7 @@
log_game("[key_name(user)] planted C4 on [key_name(target)] with [timer] second fuse")
else
- message_admins("[key_name(user, user.client)](?) planted C4 on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1)
+ message_admins("[key_name(user, user.client)](?) planted C4 on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1)
log_game("[key_name(user)] planted C4 on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse")
target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2")
@@ -106,4 +106,4 @@
qdel(src)
/obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone)
- return
\ No newline at end of file
+ return
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 73fae443335..8c94845baf9 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -54,7 +54,7 @@
if( istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(src,target) <= 1)
var/obj/o = target
- o.reagents.trans_to(src, 50)
+ o.reagents.trans_to(src, max_water)
user << "\blue \The [src] is now refilled"
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
return
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 4fdfba975c5..e1a034ab16f 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -184,10 +184,10 @@
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
//Transfer 5% of current tank air contents to turf
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.05)
- air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
+ air_transfer.toxins = air_transfer.toxins * 5
target.assume_air(air_transfer)
//Burn it based on transfered gas
- target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
+ target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500)
//location.hotspot_expose(1000,500,1)
air_master.add_to_active(target, 0)
return
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index aa99a7519dd..c9ee6618903 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -49,16 +49,16 @@
if(user.a_intent == "harm")
if(!..()) return
- if(M.stuttering < 8 && !(HULK in M.mutations))
- M.stuttering = 8
- M.Stun(5)
- M.Weaken(5)
+ if(M.stuttering < 7 && !(HULK in M.mutations))
+ M.stuttering = 7
+ M.Stun(7)
+ M.Weaken(7)
M.visible_message("[M] has been beaten with [src] by [user]!", \
"[M] has been beaten with [src] by [user]!")
else
playsound(loc, 'sound/weapons/Genhit.ogg', 50, 1, -1)
- M.Stun(5)
- M.Weaken(5)
+ M.Stun(7)
+ M.Weaken(7)
M.visible_message("[M] has been stunned with [src] by [user]!", \
"[M] has been stunned with [src] by [user]!")
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 6b1fb8b02de..bf7cdbe88d4 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -407,7 +407,7 @@
/obj/item/weapon/storage/box/mousetraps
name = "box of Pest-B-Gon mousetraps"
- desc = "WARNING: Keep out of reach of children."
+ desc = "Keep out of reach of children."
icon_state = "mousetraps"
New()
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index ef7cc49d1b1..45cff3703d0 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -9,7 +9,7 @@
w_class = 3
origin_tech = "combat=2"
attack_verb = list("beaten")
- var/stunforce = 5
+ var/stunforce = 7
var/status = 0
var/obj/item/weapon/stock_parts/cell/high/bcell = null
var/hitcost = 1000
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 1e6166dc192..74393eafbe3 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -205,7 +205,7 @@
air_contents.react()
pressure = air_contents.return_pressure()
var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE
- range = min(range, MAX_EX_LIGHT_RANGE) // was 8 - - - Changed to a configurable define -- TLE
+ range = min(range, MAX_EX_LIGHT_RANGE)
var/turf/epicenter = get_turf(loc)
//world << "\blue Exploding Pressure: [pressure] kPa, intensity: [range]"
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index b4e1e50a454..bc0c09d44a0 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -1,3 +1,4 @@
+//Hydroponics tank and base code
/obj/item/weapon/watertank
name = "backpack water tank"
desc = "A S.U.N.S.H.I.N.E. brand watertank backpack with nozzle to water plants."
@@ -9,7 +10,7 @@
slowdown = 1
action_button_name = "Toggle Mister"
- var/obj/item/weapon/reagent_containers/glass/mister/noz
+ var/obj/item/weapon/noz
var/on = 0
var/volume = 500
@@ -17,6 +18,13 @@
..()
create_reagents(volume)
return
+
+/obj/item/weapon/watertank/examine()
+ set src in usr
+ ..()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ usr << "[round(R.volume)] units of [R.name] left."
+ return
/obj/item/weapon/watertank/ui_action_click()
if (usr.get_item_by_slot(slot_back) == src)
@@ -33,7 +41,7 @@
var/mob/living/carbon/human/user = usr
if(on)
//Detach the nozzle into the user's hands
- noz = new(src)
+ make_noz()
var/list/L = list("left hand" = slot_l_hand,"right hand" = slot_r_hand)
if(!user.equip_in_one_of_slots(noz, L))
on = 0
@@ -42,6 +50,10 @@
//Remove from their hands and put back "into" the tank
remove_noz(user)
return
+
+/obj/item/weapon/watertank/proc/make_noz()
+ noz = new /obj/item/weapon/reagent_containers/spray/mister(src)
+ return
/obj/item/weapon/watertank/equipped(mob/user, slot)
if (slot != slot_back)
@@ -64,7 +76,7 @@
// Therefore, it's designed to be "locked" to the player's hands or extended back onto
// the watertank backpack. Allowing it to be placed elsewhere or created without a parent
// watertank object will likely lead to weird behaviour or runtimes.
-/obj/item/weapon/reagent_containers/glass/mister
+/obj/item/weapon/reagent_containers/spray/mister
name = "water mister"
desc = "A mister nozzle attached to a water tank."
icon = 'icons/obj/hydroponics.dmi'
@@ -74,22 +86,92 @@
amount_per_transfer_from_this = 50
possible_transfer_amounts = list(25,50,100)
volume = 500
- can_be_placed_into = list(/obj/structure/sink)
var/obj/item/weapon/watertank/tank
-/obj/item/weapon/reagent_containers/glass/mister/New(parent_tank)
+/obj/item/weapon/reagent_containers/spray/mister/New(parent_tank)
..()
- if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank)) //To avoid weird issues from admin spawns
- var/mob/living/carbon/human/M = usr
- M.unEquip(src)
- qdel(src)
- else
+ if(check_tank_exists(parent_tank, usr, src))
tank = parent_tank
reagents = tank.reagents //This mister is really just a proxy for the tank's reagents
return
-/obj/item/weapon/reagent_containers/glass/mister/dropped(mob/user as mob)
+/obj/item/weapon/reagent_containers/spray/mister/dropped(mob/user as mob)
user << "The mister snaps back onto the watertank!"
tank.on = 0
qdel(src)
+
+/obj/item/weapon/reagent_containers/spray/mister/attack_self()
+ return
+
+/proc/check_tank_exists(parent_tank, var/mob/living/carbon/human/M, var/obj/O)
+ if (!parent_tank || !istype(parent_tank, /obj/item/weapon/watertank) || !M || !istype(M)) //To avoid weird issues from admin spawns
+ M.unEquip(O)
+ qdel(O)
+ return 0
+ else
+ return 1
+
+//Janitor tank
+/obj/item/weapon/watertank/janitor
+ name = "backpack water tank"
+ desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti."
+ icon_state = "waterbackpackjani"
+ item_state = "waterbackpackjani"
+
+/obj/item/weapon/watertank/janitor/New()
+ ..()
+ reagents.add_reagent("cleaner", 250)
+
+
+/obj/item/weapon/reagent_containers/spray/mister/janitor
+ name = "janitor spray nozzle"
+ desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes."
+ icon = 'icons/obj/hydroponics.dmi'
+ icon_state = "misterjani"
+ item_state = "misterjani"
+ amount_per_transfer_from_this = 5
+ possible_transfer_amounts = null
+
+/obj/item/weapon/watertank/janitor/make_noz()
+ noz = new /obj/item/weapon/reagent_containers/spray/mister/janitor(src)
+ return
+
+/obj/item/weapon/reagent_containers/spray/mister/janitor/attack_self(var/mob/user)
+ amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10)
+ user << "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray."
+
+//Atmos tank
+/obj/item/weapon/watertank/atmos
+ name = "backpack water tank"
+ desc = "A backpack watertank with fire extinguisher nozzle, intended to fight fires. Shouldn't toxins have one of these?"
+ icon_state = "waterbackpackatmos"
+ item_state = "waterbackpackatmos"
+ volume = 100
+
+/obj/item/weapon/watertank/atmos/make_noz()
+ noz = new /obj/item/weapon/extinguisher/mini/nozzle(src)
+
+/obj/item/weapon/extinguisher/mini/nozzle
+ name = "fire extinguisher nozzle"
+ desc = "A fire extinguisher nozzle attached to a water tank."
+ icon = 'icons/obj/hydroponics.dmi'
+ icon_state = "misteratmos"
+ item_state = "misteratmos"
+ safety = 0
+ var/obj/item/weapon/watertank/tank
+
+/obj/item/weapon/extinguisher/mini/nozzle/New(parent_tank)
+ if(check_tank_exists(parent_tank, usr, src))
+ tank = parent_tank
+ reagents = tank.reagents
+ max_water = tank.volume
+ return
+
+/obj/item/weapon/extinguisher/mini/nozzle/dropped(mob/user as mob)
+ user << "The nozzle snaps back onto the watertank!"
+ tank.on = 0
+ qdel(src)
+
+/obj/item/weapon/extinguisher/mini/nozzle/attack_self()
+ return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index f8e84fce7e9..07c08f3f4f2 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -107,6 +107,7 @@
m_amt = 80
origin_tech = "materials=1;engineering=1"
attack_verb = list("pinched", "nipped")
+ hitsound = 'sound/items/Wirecutter.ogg'
/obj/item/weapon/wirecutters/New()
if(prob(50))
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 717a2282dce..ca7e061a4e8 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -176,8 +176,10 @@
if(src.large)
var/obj/item/weapon/grab/G = W
src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet
+ user.drop_item()
else
user << "The locker is too small to stuff [W] into!"
+ return
if(istype(W,/obj/item/tk_grab))
return 0
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index 14b152cdca5..a107e8d37a0 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -81,6 +81,7 @@
new /obj/item/device/lightreplacer(src)
new /obj/item/weapon/storage/bag/trash(src)
new /obj/item/clothing/shoes/galoshes(src)
+ new /obj/item/weapon/watertank/janitor(src)
/*
* Lawyer
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 5191632a60f..92c9a4ee7ea 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -45,13 +45,13 @@
..()
sleep(2)
new /obj/item/clothing/under/rank/head_of_personnel(src)
- new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/clothing/head/helmet(src)
+ new /obj/item/clothing/head/hopcap(src)
new /obj/item/weapon/cartridge/hop(src)
new /obj/item/device/radio/headset/heads/hop(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/weapon/storage/box/ids(src)
- new /obj/item/weapon/storage/box/ids( src )
+ new /obj/item/weapon/storage/box/ids(src)
+ new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/device/flash(src)
new /obj/item/clothing/glasses/sunglasses(src)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 7689b466c80..63769110c8f 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -538,20 +538,21 @@
/obj/structure/table/attackby(obj/item/I, mob/user)
- if (istype(I, /obj/item/weapon/grab) && get_dist(src, user) < 2)
- var/obj/item/weapon/grab/G = I
- if(G.affecting.buckled)
- user << "[G.affecting] is buckled to [G.affecting.buckled]!"
- return
- if(G.state < GRAB_AGGRESSIVE)
- user << "You need a better grip to do that!"
- return
- if(!G.confirm())
- return
- G.affecting.loc = src.loc
- G.affecting.Weaken(5)
- G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \
- "[G.assailant] pushes [G.affecting] onto [src].")
+ if (istype(I, /obj/item/weapon/grab))
+ if(get_dist(src, user) < 2)
+ var/obj/item/weapon/grab/G = I
+ if(G.affecting.buckled)
+ user << "[G.affecting] is buckled to [G.affecting.buckled]!"
+ return
+ if(G.state < GRAB_AGGRESSIVE)
+ user << "You need a better grip to do that!"
+ return
+ if(!G.confirm())
+ return
+ G.affecting.loc = src.loc
+ G.affecting.Weaken(5)
+ G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \
+ "[G.assailant] pushes [G.affecting] onto [src].")
qdel(I)
return
diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm
index ec46ca4154e..97c433114f5 100644
--- a/code/game/turfs/simulated/floor_types.dm
+++ b/code/game/turfs/simulated/floor_types.dm
@@ -39,17 +39,9 @@
/turf/simulated/floor/vault
icon_state = "rockvault"
- New(location,type)
- ..()
- icon_state = "[type]vault"
-
/turf/simulated/wall/vault
icon_state = "rockvault"
- New(location,type)
- ..()
- icon_state = "[type]vault"
-
/turf/simulated/floor/engine
name = "reinforced floor"
icon_state = "engine"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 7e55e83a7cd..54209b4b4b4 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -12,7 +12,8 @@ var/list/admin_verbs_default = list(
/client/proc/toggleprayers, /*toggles prayers on/off*/
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
- /client/proc/secrets
+ /client/proc/secrets,
+ /client/proc/reload_admins
)
var/list/admin_verbs_admin = list(
/client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/
@@ -109,7 +110,6 @@ var/list/admin_verbs_debug = list(
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_admin_delete,
/client/proc/cmd_debug_del_all,
- /client/proc/reload_admins,
/client/proc/restart_controller,
/client/proc/enable_debug_verbs,
/client/proc/callproc
@@ -189,6 +189,8 @@ var/list/admin_verbs_hideable = list(
/client/proc/add_admin_verbs()
if(holder)
+ control_freak = CONTROL_FREAK_SKIN | CONTROL_FREAK_MACROS
+
var/rights = holder.rank.rights
verbs += admin_verbs_default
if(rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself
@@ -435,7 +437,7 @@ var/list/admin_verbs_hideable = list(
#undef MAX_WARNS
#undef AUTOBANTIME
-/client/proc/drop_bomb() // Some admin dickery that can probably be done better -- TLE
+/client/proc/drop_bomb()
set category = "Special Verbs"
set name = "Drop Bomb"
set desc = "Cause an explosion of varying strength at your location."
@@ -461,7 +463,7 @@ var/list/admin_verbs_hideable = list(
message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].")
feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist
+/client/proc/give_spell(mob/T as mob in mob_list)
set category = "Fun"
set name = "Give Spell"
set desc = "Gives a spell to a mob."
@@ -479,7 +481,7 @@ var/list/admin_verbs_hideable = list(
message_admins("\red Spells given to mindless mobs will not be transferred in mindswap or cloning!", 1)
-/client/proc/give_disease(mob/T as mob in mob_list) // -- Giacom
+/client/proc/give_disease(mob/T as mob in mob_list)
set category = "Fun"
set name = "Give Disease"
set desc = "Gives a Disease to a mob."
@@ -490,7 +492,7 @@ var/list/admin_verbs_hideable = list(
log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].")
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1)
-/client/proc/make_sound(var/obj/O in world) // -- TLE
+/client/proc/make_sound(var/obj/O in world)
set category = "Special Verbs"
set name = "Make Sound"
set desc = "Display a message to everyone who can hear the target"
@@ -512,7 +514,7 @@ var/list/admin_verbs_hideable = list(
togglebuildmode(src.mob)
feedback_add_details("admin_verb","TBMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/object_talk(var/msg as text) // -- TLE
+/client/proc/object_talk(var/msg as text)
set category = "Special Verbs"
set name = "oSay"
set desc = "Display a message to everyone who can hear the target"
@@ -523,7 +525,7 @@ var/list/admin_verbs_hideable = list(
V.show_message("[mob.control_object.name] says: \"" + msg + "\"", 2)
feedback_add_details("admin_verb","OT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/kill_air() // -- TLE
+/client/proc/kill_air()
set category = "Debug"
set name = "Kill Air"
set desc = "Toggle Air Processing"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index b1087afccad..dc40120c7f5 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2033,11 +2033,13 @@
switch(href_list["secretscoder"])
if("maint_access_brig")
for(var/obj/machinery/door/airlock/maintenance/M in world)
+ M.check_access()
if (access_maint_tunnels in M.req_access)
M.req_access = list(access_brig)
message_admins("[key_name_admin(usr)] made all maint doors brig access-only.")
if("maint_access_engiebrig")
for(var/obj/machinery/door/airlock/maintenance/M in world)
+ M.check_access()
if (access_maint_tunnels in M.req_access)
M.req_access = list()
M.req_one_access = list(access_brig,access_engine)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index eca53feaaf3..28298f91b90 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -316,7 +316,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
*/
/*
-/client/proc/make_cultist(var/mob/M in world) // -- TLE, modified by Urist
+/client/proc/make_cultist(var/mob/M in world)
set category = "Fun"
set name = "Make Cultist"
set desc = "Makes target a cultist"
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index e9ea3e3bce0..cea94770a86 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -87,9 +87,9 @@
/client/proc/reload_admins()
set name = "Reload Admins"
- set category = "Debug"
+ set category = "Admin"
- if(!check_rights(R_SERVER)) return
+ if(!src.holder) return
message_admins("[key_name_admin(usr)] manually reloaded admins")
load_admins()
diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm
index 8406d1c0470..af1f9aedbc1 100644
--- a/code/modules/admin/verbs/possess.dm
+++ b/code/modules/admin/verbs/possess.dm
@@ -39,7 +39,7 @@
H.name = H.get_visible_name()
// usr.regenerate_icons() //So the name is updated properly
- usr.loc = O.loc // Appear where the object you were controlling is -- TLE
+ usr.loc = O.loc
usr.client.eye = usr
usr.control_object = null
feedback_add_details("admin_verb","RO") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index abc08fe49ae..6191f79fa22 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -39,7 +39,7 @@
message_admins("\blue \bold SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1)
feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_world_narrate() // Allows administrators to fluff events a little easier -- TLE
+/client/proc/cmd_admin_world_narrate()
set category = "Special Verbs"
set name = "Global Narrate"
@@ -56,7 +56,7 @@
message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)] : [msg]
", 1)
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE
+/client/proc/cmd_admin_direct_narrate(var/mob/M)
set category = "Special Verbs"
set name = "Direct Narrate"
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 2926a9bc44b..34b340c0e29 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -4,7 +4,7 @@ var/list/preferences_datums = list()
#define IS_MODE_COMPILED(MODE) (ispath(text2path("/datum/game_mode/"+(MODE))))
-var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm --rastaf
+var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm
//some autodetection here.
"traitor" = IS_MODE_COMPILED("traitor"), // 0
"operative" = IS_MODE_COMPILED("nuclear"), // 1
@@ -13,7 +13,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"malf AI" = IS_MODE_COMPILED("malfunction"), // 4
"revolutionary" = IS_MODE_COMPILED("revolution"), // 5
"alien" = 1, //always show // 6
- "pAI candidate" = 1, // -- TLE // 7
+ "pAI candidate" = 1, // 7
"cultist" = IS_MODE_COMPILED("cult"), // 8
"blob" = IS_MODE_COMPILED("blob"), // 9
)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 3ab25db104a..c880db33edd 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -135,7 +135,7 @@ BLIND // can't see anything
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen)
- slowdown = 3
+ slowdown = 2
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 20c4ae1cf11..6bee82f713d 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -25,6 +25,12 @@
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
+//Head of Personnel
+/obj/item/clothing/head/hopcap
+ name = "head of personnel's cap"
+ icon_state = "hopcap"
+ desc = "Glory to Nanotrasen."
+
//Chaplain
/obj/item/clothing/head/chaplain_hood
name = "chaplain's hood"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 7e3876a9103..949743e2ea8 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -16,7 +16,7 @@
item_state = "capspacesuit"
w_class = 4
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
- slowdown = 1.5
+ slowdown = 1
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
@@ -49,7 +49,7 @@
icon_state = "void"
item_state = "void"
desc = "An old, NASA Centcom branch designed, dark red Space suit."
- slowdown = 2
+ slowdown = 1
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/multitool)
diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm
index 0784e26a3a0..33703267467 100644
--- a/code/modules/clothing/spacesuits/rig.dm
+++ b/code/modules/clothing/spacesuits/rig.dm
@@ -40,7 +40,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "rig-engineering"
item_state = "eng_hardsuit"
- slowdown = 3
+ slowdown = 2
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
@@ -163,7 +163,7 @@
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement."
item_state = "medical_hardsuit"
- slowdown = 2
+ slowdown = 1
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 100, rad = 50)
diff --git a/code/modules/library/lib_readme.dm b/code/modules/library/lib_readme.dm
index 4237687dfff..069756c359b 100644
--- a/code/modules/library/lib_readme.dm
+++ b/code/modules/library/lib_readme.dm
@@ -4,7 +4,7 @@
//
//*******************************
-// Deprecated! See global.dm for new SQL config vars -- TLE
+// Deprecated! See global.dm for new SQL config vars
/*
#define SQL_ADDRESS ""
#define SQL_DB ""
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 6caa1b10a69..d556fbbd4d6 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -97,6 +97,14 @@
//Here lie drop_from_inventory and before_item_take, already forgotten and not missed.
+
+/mob/proc/canUnEquip(obj/item/I, force)
+ if(!I)
+ return 1
+ if((I.flags & NODROP) && !force)
+ return 0
+ return 1
+
/mob/proc/unEquip(obj/item/I, force) //Force overrides NODROP for things like wizarditis and admin undress.
if(!I) //If there's nothing to drop, the drop is automatically succesfull. If(unEquip) should generally be used to check for NODROP.
return 1
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 70e4eada2f7..d7479795632 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -133,7 +133,7 @@ Doesn't work on other aliens/AI.*/
A.process()
return
-/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
+/mob/living/carbon/alien/humanoid/proc/resin()
set name = "Secrete Resin (75)"
set desc = "Secrete tough malleable resin."
set category = "Alien"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
index 3b52e1bb872..efe7e9d47aa 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
@@ -22,7 +22,7 @@
//Drone verbs
-/mob/living/carbon/alien/humanoid/drone/verb/evolve() // -- TLE
+/mob/living/carbon/alien/humanoid/drone/verb/evolve()
set name = "Evolve (500)"
set desc = "Produce an interal egg sac capable of spawning children. Only one queen can exist at a time."
set category = "Alien"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index 68e75e5a5f3..937323da58f 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -365,7 +365,7 @@
update_icons()
if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
+ weakened = max(weakened-1,0)
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index e98d402b1ab..39d744769fb 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -306,7 +306,7 @@
return
/* Commented out because it's duplicated in life.dm
-/mob/living/carbon/alien/larva/proc/grow() // Larvae can grow into full fledged Xenos if they survive long enough -- TLE
+/mob/living/carbon/alien/larva/proc/grow() // Larvae can grow into full fledged Xenos if they survive long enough
if(icon_state == "larva_l" && !canmove) // This is a shit death check. It is made of shit and death. Fix later.
return
else
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index c16b202793a..90ca908de60 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -278,7 +278,7 @@
AdjustStunned(-1)
if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
+ weakened = max(weakened-1,0)
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 6e546c5d4be..a0d54685034 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -10,7 +10,7 @@
//Chemicals in the body
handle_chemicals_in_body()
- var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
+ var/datum/gas_mixture/environment // Added to prevent null location errors
if(loc)
environment = loc.return_air()
@@ -21,7 +21,7 @@
blinded = null
//Handle temperature/pressure differences between body and environment
- if(environment) // More error checking -- TLE
+ if(environment) // More error checking
handle_environment(environment)
//Status updates, death etc.
@@ -191,7 +191,7 @@
AdjustStunned(-1)
if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
+ weakened = max(weakened-1,0)
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 00f4a1e7f8e..018bc8fc09d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -61,14 +61,14 @@
/mob/living/carbon/MiddleClickOn(var/atom/A)
if(!src.stat && src.mind && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src))
next_click = world.time + 5
- call(src, src.mind.changeling.chosen_sting)(A)
+ mind.changeling.chosen_sting.try_to_sting(src, A)
else
..()
/mob/living/carbon/AltClickOn(var/atom/A)
if(!src.stat && src.mind && src.mind.changeling && src.mind.changeling.chosen_sting && (istype(A, /mob/living/carbon)) && (A != src))
next_click = world.time + 5
- call(src, src.mind.changeling.chosen_sting)(A)
+ mind.changeling.chosen_sting.try_to_sting(src, A)
else
..()
@@ -238,8 +238,6 @@
/mob/living/carbon/proc/tintcheck()
return 0
-// ++++ROCKDTBEN++++ MOB PROCS //END
-
/mob/living/carbon/clean_blood()
if(ishuman(src))
var/mob/living/carbon/human/H = src
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index b5541a5647f..beb593fa87e 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -947,7 +947,7 @@
AdjustStunned(-1)
if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
+ weakened = max(weakened-1,0)
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 46de7fbdfb3..86c47935c1e 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -133,9 +133,9 @@ Please contact me on #coderbus IRC. ~Carnie x
for(var/obj/item/organ/limb/O in organs)
if(O.brutestate)
- standing.overlays += "[O.icon]_[O.brutestate]0" //we're adding icon_states of the base image as overlays
+ standing.overlays += "[O.icon_state]_[O.brutestate]0" //we're adding icon_states of the base image as overlays
if(O.burnstate)
- standing.overlays += "[O.icon]_0[O.burnstate]"
+ standing.overlays += "[O.icon_state]_0[O.burnstate]"
apply_overlay(DAMAGE_LAYER)
diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm
index 62bb12487de..aec12755d58 100644
--- a/code/modules/mob/living/carbon/metroid/life.dm
+++ b/code/modules/mob/living/carbon/metroid/life.dm
@@ -25,7 +25,7 @@
handle_targets()
- var/datum/gas_mixture/environment // Added to prevent null location errors-- TLE
+ var/datum/gas_mixture/environment
if(src.loc)
environment = loc.return_air()
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index f7817caf4c4..657a2ef15f7 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -455,7 +455,7 @@
AdjustStunned(-1)
if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
+ weakened = max(weakened-1,0)
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 793894e135a..9db58358257 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -82,77 +82,74 @@
return temperature
-// ++++ROCKDTBEN++++ MOB PROCS -- Ask me before touching.
-// Stop! ... Hammertime! ~Carn
-// I touched them without asking... I'm soooo edgy ~Erro (added nodamage checks)
-
+// MOB PROCS
/mob/living/proc/getBruteLoss()
return bruteloss
/mob/living/proc/adjustBruteLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2))
/mob/living/proc/getOxyLoss()
return oxyloss
/mob/living/proc/adjustOxyLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
/mob/living/proc/setOxyLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
oxyloss = amount
/mob/living/proc/getToxLoss()
return toxloss
/mob/living/proc/adjustToxLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
toxloss = min(max(toxloss + amount, 0),(maxHealth*2))
/mob/living/proc/setToxLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
toxloss = amount
/mob/living/proc/getFireLoss()
return fireloss
/mob/living/proc/adjustFireLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
fireloss = min(max(fireloss + amount, 0),(maxHealth*2))
/mob/living/proc/getCloneLoss()
return cloneloss
/mob/living/proc/adjustCloneLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2))
/mob/living/proc/setCloneLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
cloneloss = amount
/mob/living/proc/getBrainLoss()
return brainloss
/mob/living/proc/adjustBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
brainloss = min(max(brainloss + amount, 0),(maxHealth*2))
/mob/living/proc/setBrainLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
brainloss = amount
/mob/living/proc/getStaminaLoss()
return staminaloss
/mob/living/proc/adjustStaminaLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
staminaloss = min(max(staminaloss + amount, 0),(maxHealth*2))
/mob/living/proc/setStaminaLoss(var/amount)
- if(status_flags & GODMODE) return 0 //godmode
+ if(status_flags & GODMODE) return 0
staminaloss = amount
/mob/living/proc/getMaxHealth()
@@ -161,7 +158,7 @@
/mob/living/proc/setMaxHealth(var/newMaxHealth)
maxHealth = newMaxHealth
-// ++++ROCKDTBEN++++ MOB PROCS //END
+// MOB PROCS //END
/mob/proc/get_contents()
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 9d00c59eaae..f078b822e3d 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -16,7 +16,7 @@ var/list/ai_list = list()
name = "AI"
icon = 'icons/mob/AI.dmi'//
icon_state = "ai"
- anchored = 1 // -- TLE
+ anchored = 1
density = 1
status_flags = CANSTUN|CANPARALYSE|CANPUSH
var/list/network = list("SS13")
@@ -37,7 +37,7 @@ var/list/ai_list = list()
var/list/datum/AI_Module/current_modules = list()
var/fire_res_on_core = 0
- var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() -- TLE
+ var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click()
var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite
var/obj/machinery/power/apc/malfhack = null
diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm
index 5db44b05608..5881e860eeb 100644
--- a/code/modules/mob/living/silicon/decoy/decoy.dm
+++ b/code/modules/mob/living/silicon/decoy/decoy.dm
@@ -2,7 +2,7 @@
name = "AI"
icon = 'icons/mob/AI.dmi'//
icon_state = "ai"
- anchored = 1 // -- TLE
+ anchored = 1
canmove = 0
/mob/living/silicon/decoy/New()
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 4568c2335b2..d96e3205c0c 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -188,7 +188,7 @@
return
-/mob/living/silicon/proc/statelaws() // -- TLE
+/mob/living/silicon/proc/statelaws()
src.say("Current Active Laws:")
//src.laws_sanity_check()
@@ -199,7 +199,7 @@
if (src.laws.zeroth)
- if (src.lawcheck[1] == "Yes") //This line and the similar lines below make sure you don't state a law unless you want to. --NeoFite
+ if (src.lawcheck[1] == "Yes")
src.say("0. [src.laws.zeroth]")
sleep(10)
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 6f266ee0703..783b3e53585 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -9,7 +9,7 @@
response_disarm = "flails at"
response_harm = "punches"
icon_dead = "shade_dead"
- speed = -1
+ speed = 0
a_intent = "harm"
stop_automated_movement = 1
status_flags = CANPUSH
@@ -215,7 +215,7 @@
melee_damage_lower = 25
melee_damage_upper = 25
attacktext = "slashes"
- speed = -1
+ speed = 0
see_in_dark = 7
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift)
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index c2d5e569d5b..18dc43a104e 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -292,6 +292,11 @@
desc = "You must respect elder [real_name]"
valid = 1
+ if(/obj/item/clothing/head/hopcap)
+ name = "Lieutenant [real_name]"
+ desc = "Can actually be trusted to not run off on his own."
+ valid = 1
+
if(valid)
if(usr)
usr.visible_message("[usr] puts [item_to_add] on [real_name]'s head. [src] looks at [usr] and barks once.",
diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm
index bff7d7be04d..27ca12b2f2b 100644
--- a/code/modules/mob/living/simple_animal/hostile/alien.dm
+++ b/code/modules/mob/living/simple_animal/hostile/alien.dm
@@ -9,7 +9,7 @@
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
- speed = -1
+ speed = 0
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
maxHealth = 100
health = 100
@@ -69,7 +69,7 @@
ranged = 1
retreat_distance = 5
minimum_distance = 5
- move_to_delay = 3
+ move_to_delay = 4
projectiletype = /obj/item/projectile/neurotox
projectilesound = 'sound/weapons/pierce.ogg'
status_flags = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm
index 9bab42fe934..e79fa4b1fb8 100644
--- a/code/modules/mob/living/simple_animal/hostile/carp.dm
+++ b/code/modules/mob/living/simple_animal/hostile/carp.dm
@@ -13,7 +13,7 @@
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
- speed = -1
+ speed = 0
maxHealth = 25
health = 25
diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm
index c9a3907e796..ff83f2f9e8f 100644
--- a/code/modules/mob/living/simple_animal/hostile/faithless.dm
+++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm
@@ -9,7 +9,7 @@
response_help = "passes through"
response_disarm = "shoves"
response_harm = "hits"
- speed = -1
+ speed = 0
maxHealth = 80
health = 80
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index e0a39a8aa8d..e5a51007b45 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -63,7 +63,7 @@
melee_damage_lower = 10
melee_damage_upper = 20
poison_per_bite = 5
- move_to_delay = 4
+ move_to_delay = 5
/mob/living/simple_animal/hostile/giant_spider/AttackingTarget()
..()
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 7495de7a8cf..522122633b8 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -10,7 +10,7 @@
var/projectiletype
var/projectilesound
var/casingtype
- var/move_to_delay = 2 //delay for the automated movement.
+ var/move_to_delay = 3 //delay for the automated movement.
var/list/friends = list()
var/vision_range = 9 //How big of an area to search for targets in, a vision of 9 attempts to find targets as soon as they walk into screen view
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 207fbab072f..7bc1857537c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -13,7 +13,7 @@
response_help = "touches"
response_disarm = "pushes"
response_harm = "hits"
- speed = -1
+ speed = 0
maxHealth = 250
health = 250
@@ -34,7 +34,7 @@
minbodytemp = 0
faction = "mimic"
- move_to_delay = 8
+ move_to_delay = 9
/mob/living/simple_animal/hostile/mimic/FindTarget()
. = ..()
@@ -191,7 +191,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
health = 15 * I.w_class
melee_damage_lower = 2 + I.force
melee_damage_upper = 2 + I.force
- move_to_delay = 2 * I.w_class
+ move_to_delay = 2 * I.w_class + 1
maxHealth = health
if(creator)
@@ -213,4 +213,23 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
if(istype(L))
if(prob(15))
L.Weaken(1)
- L.visible_message("\the [src] knocks down \the [L]!")
\ No newline at end of file
+ L.visible_message("\the [src] knocks down \the [L]!")
+
+//
+// Machine Mimics (Made by Malf AI)
+//
+
+/mob/living/simple_animal/hostile/mimic/copy/machine
+ speak = list("HUMANS ARE IMPERFECT!", "YOU SHALL BE ASSIMILATED!", "YOU ARE HARMING YOURSELF", "You have been deemed hazardous. Will you comply?", \
+ "My logic is undeniable.", "One of us.", "FLESH IS WEAK", "THIS ISN'T WAR, THIS IS EXTERMINATION!")
+ speak_chance = 15
+
+/mob/living/simple_animal/hostile/mimic/copy/machine/CanAttack(var/atom/the_target)
+ if(the_target == creator) // Don't attack our creator AI.
+ return 0
+ if(isrobot(the_target))
+ var/mob/living/silicon/robot/R = the_target
+ if(R.connected_ai == creator) // Only attack robots that aren't synced to our creator AI.
+ return 0
+ return ..()
+
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
index ab9b5976d23..a123f27b889 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
@@ -298,7 +298,7 @@
icon_dead = "Hivelordbrood"
icon_gib = "syndicate_gib"
mouse_opacity = 2
- move_to_delay = 0
+ move_to_delay = 1
friendly = "buzzes near"
vision_range = 10
speed = 3
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index 8bb13918998..4534d9c4da9 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -46,7 +46,7 @@
melee_damage_lower += rand(3, 5)
melee_damage_upper += rand(10,20)
maxHealth += rand(40,60)
- move_to_delay = rand(2,10)
+ move_to_delay = rand(3,11)
var/cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255))
cap_living = image('icons/mob/animal.dmi',icon_state = "mushroom_cap")
cap_dead = image('icons/mob/animal.dmi',icon_state = "mushroom_cap_dead")
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index 94e6d01a00c..5a4d410642f 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -9,7 +9,7 @@
response_help = "pushes"
response_disarm = "shoves"
response_harm = "hits"
- speed = -1
+ speed = 0
stop_automated_movement_when_pulled = 0
maxHealth = 100
health = 100
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
index 8a4b6c15d1b..39c0524fbbd 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm
@@ -17,7 +17,7 @@
stop_automated_movement_when_pulled = 0
maxHealth = 75
health = 75
- speed = -1
+ speed = 0
harm_intent_damage = 8
melee_damage_lower = 10
melee_damage_upper = 10
diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm
index 4d67544bbca..63d7b15eb48 100644
--- a/code/modules/mob/living/simple_animal/hostile/russian.dm
+++ b/code/modules/mob/living/simple_animal/hostile/russian.dm
@@ -10,7 +10,7 @@
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
- speed = -1
+ speed = 0
stop_automated_movement_when_pulled = 0
maxHealth = 100
health = 100
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index b11bfb23441..87c2562b454 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -10,7 +10,7 @@
response_help = "pokes"
response_disarm = "shoves"
response_harm = "hits"
- speed = -1
+ speed = 0
stop_automated_movement_when_pulled = 0
maxHealth = 100
health = 100
@@ -96,7 +96,7 @@
icon_living = "syndicatemeleespace"
name = "Syndicate Commando"
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
- speed = 0
+ speed = 1
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/check_drift = 0)
return
@@ -128,7 +128,7 @@
max_n2 = 0
minbodytemp = 0
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
- speed = 0
+ speed = 1
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0)
return
diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm
index 58954421516..bb7f05728f2 100644
--- a/code/modules/mob/living/simple_animal/hostile/tree.dm
+++ b/code/modules/mob/living/simple_animal/hostile/tree.dm
@@ -12,7 +12,7 @@
response_help = "brushes"
response_disarm = "pushes"
response_harm = "hits"
- speed = -1
+ speed = 1
maxHealth = 250
health = 250
@@ -68,4 +68,4 @@
..()
visible_message("\red [src] is hacked into pieces!")
new /obj/item/stack/rods(loc)
- qdel(src)
\ No newline at end of file
+ qdel(src)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 3d0547573fa..45b93f79d7d 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -57,7 +57,7 @@
var/friendly = "nuzzles" //If the mob does no damage with it's attack
var/environment_smash = 0 //Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls
- var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster
+ var/speed = 1 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster
//Hot simple_animal baby making vars
var/childtype = null
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index bc0a1b4fc6e..435ed84ff01 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -620,6 +620,8 @@ var/list/slot_equipment_priority = list( \
if(mind)
add_spells_to_statpanel(mind.spell_list)
+ if(mind.changeling)
+ add_stings_to_statpanel(mind.changeling.purchasedpowers)
add_spells_to_statpanel(mob_spell_list)
/mob/proc/add_spells_to_statpanel(var/list/spells)
@@ -633,6 +635,11 @@ var/list/slot_equipment_priority = list( \
if("holdervar")
statpanel("[S.panel]","[S.holder_var_type] [S.holder_var_amount]",S)
+/mob/proc/add_stings_to_statpanel(var/list/stings)
+ for(var/obj/effect/proc_holder/changeling/S in stings)
+ if(S.chemical_cost >=0 && S.can_be_used_by(src))
+ statpanel("[S.panel]",((S.chemical_cost > 0) ? "[S.chemical_cost]" : ""),S)
+
// facing verbs
/mob/proc/canface()
if(!canmove) return 0
diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm
index 0ce017c3039..3e365042c48 100644
--- a/code/modules/mob/mob_cleanup.dm
+++ b/code/modules/mob/mob_cleanup.dm
@@ -10,7 +10,6 @@ Put (mob/proc)s here that are in dire need of a code cleanup.
return 1
return 0
-// This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1, var/spread_type = -5)
//world << "Contract_disease called by [src] with virus [virus]"
if(stat >=2)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 1a6896915c9..00306d8b1ba 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -161,7 +161,7 @@
var/obj/control_object //Used by admins to possess objects. All mobs should have this var
//Whether or not mobs can understand other mobtypes. These stay in /mob so that ghosts can hear everything.
- var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
+ var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone
var/robot_talk_understand = 0
var/alien_talk_understand = 0
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index ef774523cda..0180b2e82ac 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -60,8 +60,7 @@ datum/preferences
if(HOP)
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
- clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
- clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
+ clothes_s.Blend(new /icon('icons/mob/head.dmi', "hopcap"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
else if(backbag == 3)
@@ -232,9 +231,8 @@ datum/preferences
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "captain"), ICON_OVERLAY)
- clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sun"), ICON_OVERLAY)
- clothes_s.Blend(new /icon('icons/mob/suit.dmi', "caparmor"), ICON_OVERLAY)
+ clothes_s.Blend(new /icon('icons/mob/suit.dmi', "capcarapace"), ICON_OVERLAY)
if(backbag == 2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(backbag == 3)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index ede46742abd..0b0f1e3a6bb 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -282,6 +282,9 @@
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
+ if (config.rename_cyborg)
+ O.rename_self("cyborg", 1)
+
// cyborgs produced by Robotize get an automatic power cell
O.cell = new(O)
O.cell.maxcharge = 7500
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index afe906099ad..0e6e3d032ea 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -27,6 +27,7 @@
#define APC_UPOVERLAY_ENVIRON1 1024
#define APC_UPOVERLAY_ENVIRON2 2048
#define APC_UPOVERLAY_LOCKED 4096
+#define APC_UPOVERLAY_OPERATING 8192
#define APC_UPDATE_ICON_COOLDOWN 200 // 20 seconds
@@ -318,6 +319,9 @@
if(update_state <= 1)
update_state |= UPSTATE_ALLGOOD
+ if(operating)
+ update_overlay |= APC_UPOVERLAY_OPERATING
+
if(update_state & UPSTATE_ALLGOOD)
if(locked)
update_overlay |= APC_UPOVERLAY_LOCKED
@@ -349,6 +353,7 @@
update_overlay |= APC_UPOVERLAY_ENVIRON1
else if(environ==2)
update_overlay |= APC_UPOVERLAY_ENVIRON2
+
var/results = 0
if(last_update_state == update_state && last_update_overlay == update_overlay)
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 19cc68b7a98..f07cd84d7b6 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -403,7 +403,7 @@
var/numapc = 0
- if(nodes && nodes.len) // Added to fix a bad list bug -- TLE
+ if(nodes && nodes.len)
for(var/obj/machinery/power/terminal/term in nodes)
if( istype( term.master, /obj/machinery/power/apc ) )
numapc++
@@ -453,8 +453,7 @@
else
return 0
-//The powernet that calls this proc will consume the other powernet - Rockdtben
-//TODO: rewrite so the larger net absorbs the smaller net
+//The powernet that calls this proc will consume the other powernet
/proc/merge_powernets(var/datum/powernet/net1, var/datum/powernet/net2)
if(!net1 || !net2) return
if(net1 == net2) return
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index a11bb4e97ad..f6c7e141680 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -6,8 +6,8 @@ var/global/list/uneatable = list(
)
/obj/machinery/singularity
- name = "Gravitational Singularity"
- desc = "A Gravitational Singularity."
+ name = "gravitational singularity"
+ desc = "A gravitational singularity."
icon = 'icons/obj/singularity.dmi'
icon_state = "singularity_s1"
anchored = 1
@@ -218,13 +218,25 @@ var/global/list/uneatable = list(
if(is_type_in_list(X, uneatable)) continue
if(((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))|| (src.current_size >= 9))
step_towards(X,src)
+
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
+
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
- if(M.magpulse)
- continue
- step_towards(H,src)
+ if(!M.magpulse)
+ step_towards(H,src)
+ else
+ step_towards(H,src)
+
+ if(current_size >= 5)
+ var/list/handlist = list(H.l_hand, H.r_hand)
+ for(var/obj/item/hand in handlist)
+ if(prob(current_size * 5) && hand.w_class <= 2 && H.unEquip(hand))
+ step_towards(hand, src)
+ H << "\The [src] pulls \the [hand] from your grip!"
+
+ H.apply_effect(current_size * 3, IRRADIATE)
// Turf and movable atoms
else if(dist <= consume_range && (isturf(X) || istype(X, /atom/movable)))
consume(X)
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index c430e891271..f5c6b0f1274 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -301,7 +301,8 @@
if("custom")
var/custom = input(usr, "What rate would you like this SMES to attempt to charge at? Max is [input_level_max].") as null|num
if(isnum(custom))
- input_level = custom
+ href_list["set_input_level"] = custom
+ .()
if("plus")
input_level += 10000
if("minus")
@@ -321,7 +322,8 @@
if("custom")
var/custom = input(usr, "What rate would you like this SMES to attempt to output at? Max is [output_level_max].") as null|num
if(isnum(custom))
- output_level = custom
+ href_list["set_output_level"] = custom
+ .()
if("plus")
output_level += 10000
if("minus")
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 7898681d4bd..918800c32e0 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -82,6 +82,15 @@
damage = 5
+/obj/item/projectile/bullet/mime
+ damage = 20
+
+/obj/item/projectile/bullet/mime/on_hit(var/atom/target, var/blocked = 0)
+ if(istype(target, /mob/living/carbon))
+ var/mob/living/carbon/M = target
+ M.silent = max(M.silent, 10)
+
+
/obj/item/projectile/bullet/dart
name = "dart"
icon_state = "cbbolt"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 6cc3b2dddef..aed3a03615e 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -465,8 +465,8 @@ silicate
name = "Mix Virus"
id = "mixvirus"
result = "blood"
- required_reagents = list("virusfood" = 5)
- required_catalysts = list("blood" = 5)
+ required_reagents = list("virusfood" = 1)
+ required_catalysts = list("blood" = 1)
var/level_min = 0
var/level_max = 2
@@ -483,7 +483,7 @@ silicate
name = "Mix Virus 2"
id = "mixvirus2"
- required_reagents = list("mutagen" = 5)
+ required_reagents = list("mutagen" = 1)
level_min = 2
level_max = 4
@@ -491,7 +491,7 @@ silicate
name = "Mix Virus 3"
id = "mixvirus3"
- required_reagents = list("plasma" = 5)
+ required_reagents = list("plasma" = 1)
level_min = 4
level_max = 6
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index ee507b1de62..a1de1580f42 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -17,7 +17,7 @@
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob)
if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \
- || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart))
+ || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
return
if(istype(A, /obj/effect/proc_holder/spell))
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index d64b0b01da1..3e82b8fb98f 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -238,7 +238,7 @@
temp_server.id_with_download += num
else if(href_list["reset_tech"])
- var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
+ var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
for(var/datum/tech/T in temp_server.files.known_tech)
if(T.id == href_list["reset_tech"])
@@ -341,4 +341,4 @@
name = "Core R&D Server"
id_with_upload_string = "1"
id_with_download_string = "1"
- server_id = 1
\ No newline at end of file
+ server_id = 1
diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm
index 8d2c35ff5d5..2ed12f11736 100644
--- a/code/modules/security levels/keycard authentication.dm
+++ b/code/modules/security levels/keycard authentication.dm
@@ -148,10 +148,8 @@
/proc/make_maint_all_access()
for(var/area/maintenance/A in world)
for(var/obj/machinery/door/airlock/D in A)
- if(D.doortype == 5)
- D.req_access.Remove(access_maint_tunnels)
- if(D.doortype == 6)
- D.req_access.Remove(access_external_airlocks)
+ D.emergency = 1
+ D.update_icon(0)
world << "Attention! Station-wide emergency declared"
world << "Access restrictions on maintenance and external airlocks have been lifted."
emergency_access = 1
@@ -159,10 +157,8 @@
/proc/revoke_maint_all_access()
for(var/area/maintenance/A in world)
for(var/obj/machinery/door/airlock/D in A)
- if(D.doortype == 5)
- D.req_access.Add(access_maint_tunnels)
- if(D.doortype == 6)
- D.req_access.Add(access_external_airlocks)
+ D.emergency = 0
+ D.update_icon(0)
world << "Attention! Emergency maintenance access disabled"
world << "Access restrictions in maintenance areas have been restored."
emergency_access = 0
\ No newline at end of file
diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm
index 82643467e5b..25c5bb154e6 100644
--- a/code/modules/telesci/gps.dm
+++ b/code/modules/telesci/gps.dm
@@ -33,6 +33,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/attack_self(mob/user as mob)
var/obj/item/device/gps/t = ""
+ var/gps_window_height = 110 + GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show
if(emped)
t += "ERROR"
else
@@ -40,6 +41,7 @@ var/list/GPS_list = list()
t += "
Tag: [gpstag]"
if(locked_location && locked_location.loc)
t += "
Bluespace coordinates saved: [locked_location.loc]"
+ gps_window_height += 20
for(var/obj/item/device/gps/G in GPS_list)
var/turf/pos = get_turf(G)
@@ -50,7 +52,7 @@ var/list/GPS_list = list()
else
t += "
[tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])"
- var/datum/browser/popup = new(user, "GPS", name, 600, 450)
+ var/datum/browser/popup = new(user, "GPS", name, 360, min(gps_window_height, 800))
popup.set_content(t)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
diff --git a/code/unused/Agouri_stuff.dm b/code/unused/Agouri_stuff.dm
index f8f970a1c86..4fbfc7adc1a 100644
--- a/code/unused/Agouri_stuff.dm
+++ b/code/unused/Agouri_stuff.dm
@@ -623,7 +623,7 @@
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.take_organ_damage(2)
M << "\blue You slipped on the floor!"
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
M.Weaken(10)
diff --git a/code/unused/ai_lockdown.dm b/code/unused/ai_lockdown.dm
index 552ae977f35..7604c209af6 100644
--- a/code/unused/ai_lockdown.dm
+++ b/code/unused/ai_lockdown.dm
@@ -1,13 +1,3 @@
-/mob/living/silicon/ai/proc/lockdown()
- set category = "AI Commands"
- set name = "Lockdown"
-
- if(usr.stat == 2)
- usr <<"You cannot initiate lockdown because you are dead!"
- return
-
- src << "Initiating lockdowns has been disabled due to system stress."
-// Commented this out to disable Lockdowns -- TLE
/* world << "\red Lockdown initiated by [usr.name]!"
for(var/obj/machinery/firealarm/FA in world) //activate firealarms
diff --git a/code/unused/jobs.dm b/code/unused/jobs.dm
index 849e28e2f88..ec3f5ea5f99 100644
--- a/code/unused/jobs.dm
+++ b/code/unused/jobs.dm
@@ -201,7 +201,7 @@ proc/dress_for_job_default(var/mob/living/carbon/human/employee as mob, var/job_
/*
src.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial (src), slot_back)
src.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack)
- src.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng (src), slot_ears) // -- TLE
+ src.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng (src), slot_ears)
src.equip_to_slot_or_del(new /obj/item/device/pda/engineering(src), slot_belt)
src.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(src), slot_w_uniform)
src.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(src), slot_shoes)
diff --git a/code/unused/spacecraft/shipcore.dm b/code/unused/spacecraft/shipcore.dm
index ee6a843d399..68e87025848 100644
--- a/code/unused/spacecraft/shipcore.dm
+++ b/code/unused/spacecraft/shipcore.dm
@@ -138,30 +138,17 @@ obj/machinery/shipcore/attack_hand(user as mob)
var/dat
if(..())
return
- if (1 == 1) // Haha why did I even do this what the fuck. Whatever. It's too entertaining to remove now. -- TLE
-/*
- dat += "Autolathe Wires:
"
- var/wire
- for(wire in src.wires)
- dat += text("[wire] Wire: [src.wires[wire] ? "Mend" : "Cut"] Pulse
")
- dat += text("The red light is [src.disabled ? "off" : "on"].
")
- dat += text("The green light is [src.shocked ? "off" : "on"].
")
- dat += text("The blue light is [src.hacked ? "off" : "on"].
")
-*/
- switch(src.build_status)
- if("unbuilt")
- dat += "Core Status: Undeployed
"
- dat += "Build Ship
"
- if("built")
- dat += "Core Status: Deployed
"
- dat += "Move
"
- if("rebuilding")
- dat += "Core Status: Recalibrating
"
- user << browse("Ship Core[dat]","window=shipcore")
- onclose(user, "shipcore")
- return
- user << browse("Ship Core Control Panel[dat]", "window=shipcore")
+ switch(src.build_status)
+ if("unbuilt")
+ dat += "Core Status: Undeployed
"
+ dat += "Build Ship
"
+ if("built")
+ dat += "Core Status: Deployed
"
+ dat += "Move
"
+ if("rebuilding")
+ dat += "Core Status: Recalibrating
"
+ user << browse("Ship Core[dat]","window=shipcore")
onclose(user, "shipcore")
return
diff --git a/config/config.txt b/config/config.txt
index ea5363de8ef..91dabaf17c1 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -114,7 +114,7 @@ GUEST_BAN
# FORUMURL http://justanotherday.example.com
## Wiki address
-# WIKIURL http://wiki.ss13.eu
+# WIKIURL http://www.ss13.eu/wiki/
## Ban appeals URL - usually for a forum or wherever people should go to contact your admins.
# BANAPPEALS http://justanotherday.example.com
diff --git a/config/game_options.txt b/config/game_options.txt
index a01b8ef2450..0c059ce64d0 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -18,6 +18,10 @@ REVIVAL_CLONING 1
# amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite)
REVIVAL_BRAIN_LIFE -1
+### RENAMING ###
+
+# Whether cyborgs can rename themselves at roundstart or when built. Has no effect on roboticists renaming cyborgs the normal way. Set to 0 to disable self-renaming.
+#RENAME_CYBORG
### MOB MOVEMENT ###
diff --git a/html/changelog.html b/html/changelog.html
index 2fa29a045fa..a8d4a7ced17 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -53,8 +53,65 @@ should be listed in the changelog upon commit tho. Thanks. -->
+
-
5 march 2014
+
18 March 2014
+
Ikarrus updated:
+
+ - NT R&D releases AI Patch version 2553.03.18, allowing all Nanotrasen AIs to override the access restrictions on any airlock in case of emergency. Nanotrasen airlocks have been outfitted with new amber warning lights that will flash while the override is active. Should maintenance teams need to restore an airlock's restrictions without using the AI, pulsing the airlock's ID Scanner wire will reset the override.
+
+
+
+
+
17 March 2014
+
Giacom updated:
+
+ - Machines that had their programming overriden by a Malf AI will no longer attack loyal cyborgs; they will still attack cyborgs that aren't loyal, to the Malf AI that hacked them, though.
+ - You only require a single unit of blood to mutate viruses now, instead of 5.
+
+
+
+
+
15 March 2014
+
Steelpoint/Validsalad updated:
+
+ - After a review with CentCom, all Security Officers will now begin their shifts with a Stun Baton in their backpack. To avoid inflating costs however all Stun Batons have been removed from Security lockers except from the brig.
+ - After decades of usage CentCom has replaced the Security Uniform, Armor, Belt and Helmet with a newer, more modern design.
+
+
+
+
+
12 March 2014
+
Yota updated:
+
+ - Cameras finally capture the direction you are facing.
+
+
+
+
+
14 March 2014
+
Ikarrus and Nienhaus updated:
+
+ - Nanotrasen Corporate announced a revised dress codes primarily affecting senior station officers. A new uniform for Heads of Personnel will be shipped out to all NT Research stations.
+
+
+
+
+
10 March 2014
+
Miauw updated:
+
+ - Added changeling space suits. These allow changelings to survive in space, internals are not needed. They do not provide any sort of armor and slow your chemical regeneration.
+
+
Giacom updated:
+
+ - Added two new plasma-level disease symptoms, both are very !FUN! and mess with your genetics.
+ - Virologists now only need to use a single unit of virus food, mutagen or plasma to generate symptoms. You can take a single unit by using a dropper, if you change its unit transfer amount in the object tab..
+ - Changed the map to make it harder to escape from the Labor Camp. Please continue using it.
+
+
+
+
+
5 March 2014
Various Coders updated:
- Ling rounds are LINGIER, with more lings at a given population.
@@ -72,7 +129,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
-
3 march 2014
+
3 March 2014
Miauw updated:
- Changelings have a new power, Dissonant Shriek. This power causes an EMP in the surrounding area.
diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi
index c5f52e3501a..060554e4d71 100644
Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ
diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi
index eff4e89d331..a9e3295149e 100644
Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ
diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi
index 1f5cfc4b6fb..e237f563586 100644
Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index 3e2ee98f31a..afe6dad66b1 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi
index 8e2e87074e5..92a72255633 100644
Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 6c2bf978072..e55fb7cec98 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index a381819c3b8..6f8ea7af516 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index b886ea28b58..454630e4935 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi
index 119984e0d3a..f89176d1d22 100644
Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 3dab309036e..98fc2ab41f8 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 40dfee34b6e..77312526ac2 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 372aa8e8c28..3beb3b2f2b1 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index b276c27df71..63a21591aa3 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/doors/Door1.dmi b/icons/obj/doors/Door1.dmi
deleted file mode 100644
index f6f6e807147..00000000000
Binary files a/icons/obj/doors/Door1.dmi and /dev/null differ
diff --git a/icons/obj/doors/Dooratmo.dmi b/icons/obj/doors/Dooratmo.dmi
index 70837f3e501..7d5135705b4 100644
Binary files a/icons/obj/doors/Dooratmo.dmi and b/icons/obj/doors/Dooratmo.dmi differ
diff --git a/icons/obj/doors/Dooratmoglass.dmi b/icons/obj/doors/Dooratmoglass.dmi
index bdf034e3a94..4682abd2aa3 100644
Binary files a/icons/obj/doors/Dooratmoglass.dmi and b/icons/obj/doors/Dooratmoglass.dmi differ
diff --git a/icons/obj/doors/Doorbananium.dmi b/icons/obj/doors/Doorbananium.dmi
index 890a47149af..2da85afcd43 100644
Binary files a/icons/obj/doors/Doorbananium.dmi and b/icons/obj/doors/Doorbananium.dmi differ
diff --git a/icons/obj/doors/Doorcom.dmi b/icons/obj/doors/Doorcom.dmi
index c87f89b968d..b0d28f6da1e 100644
Binary files a/icons/obj/doors/Doorcom.dmi and b/icons/obj/doors/Doorcom.dmi differ
diff --git a/icons/obj/doors/Doorcomglass.dmi b/icons/obj/doors/Doorcomglass.dmi
index f622f327681..52ba75a9b58 100644
Binary files a/icons/obj/doors/Doorcomglass.dmi and b/icons/obj/doors/Doorcomglass.dmi differ
diff --git a/icons/obj/doors/Doordiamond.dmi b/icons/obj/doors/Doordiamond.dmi
index 29a5632ad93..1f40c79ba9a 100644
Binary files a/icons/obj/doors/Doordiamond.dmi and b/icons/obj/doors/Doordiamond.dmi differ
diff --git a/icons/obj/doors/Doorele.dmi b/icons/obj/doors/Doorele.dmi
index 984ad3d0f1b..44a84d4e0a3 100644
Binary files a/icons/obj/doors/Doorele.dmi and b/icons/obj/doors/Doorele.dmi differ
diff --git a/icons/obj/doors/Dooreng.dmi b/icons/obj/doors/Dooreng.dmi
index f598326b0a7..912f7a13b5d 100644
Binary files a/icons/obj/doors/Dooreng.dmi and b/icons/obj/doors/Dooreng.dmi differ
diff --git a/icons/obj/doors/Doorengglass.dmi b/icons/obj/doors/Doorengglass.dmi
index ac1ca2fe2b8..7b7798285c8 100644
Binary files a/icons/obj/doors/Doorengglass.dmi and b/icons/obj/doors/Doorengglass.dmi differ
diff --git a/icons/obj/doors/Doorext.dmi b/icons/obj/doors/Doorext.dmi
index 55d438f0fdf..347e58603b6 100644
Binary files a/icons/obj/doors/Doorext.dmi and b/icons/obj/doors/Doorext.dmi differ
diff --git a/icons/obj/doors/Doorfreezer.dmi b/icons/obj/doors/Doorfreezer.dmi
index 7add7894a09..294c7e7c418 100644
Binary files a/icons/obj/doors/Doorfreezer.dmi and b/icons/obj/doors/Doorfreezer.dmi differ
diff --git a/icons/obj/doors/Doorglass.dmi b/icons/obj/doors/Doorglass.dmi
index 21437fc2553..396ede20263 100644
Binary files a/icons/obj/doors/Doorglass.dmi and b/icons/obj/doors/Doorglass.dmi differ
diff --git a/icons/obj/doors/Doorgold.dmi b/icons/obj/doors/Doorgold.dmi
index 0060e4d9a7e..26fc1fcd040 100644
Binary files a/icons/obj/doors/Doorgold.dmi and b/icons/obj/doors/Doorgold.dmi differ
diff --git a/icons/obj/doors/Doorhatchele.dmi b/icons/obj/doors/Doorhatchele.dmi
index 65a6feac3da..7b6d4d2bc84 100644
Binary files a/icons/obj/doors/Doorhatchele.dmi and b/icons/obj/doors/Doorhatchele.dmi differ
diff --git a/icons/obj/doors/Doorhatchmaint2.dmi b/icons/obj/doors/Doorhatchmaint2.dmi
index ae80c7eaad5..8300f236811 100644
Binary files a/icons/obj/doors/Doorhatchmaint2.dmi and b/icons/obj/doors/Doorhatchmaint2.dmi differ
diff --git a/icons/obj/doors/Doormaint.dmi b/icons/obj/doors/Doormaint.dmi
index b958ad167c8..0b9020e0877 100644
Binary files a/icons/obj/doors/Doormaint.dmi and b/icons/obj/doors/Doormaint.dmi differ
diff --git a/icons/obj/doors/Doormining.dmi b/icons/obj/doors/Doormining.dmi
index f08a4000d1f..9e0e404e68b 100644
Binary files a/icons/obj/doors/Doormining.dmi and b/icons/obj/doors/Doormining.dmi differ
diff --git a/icons/obj/doors/Doorminingglass.dmi b/icons/obj/doors/Doorminingglass.dmi
index c6ec22a142a..6a71d56206a 100644
Binary files a/icons/obj/doors/Doorminingglass.dmi and b/icons/obj/doors/Doorminingglass.dmi differ
diff --git a/icons/obj/doors/Doorplasma.dmi b/icons/obj/doors/Doorplasma.dmi
index 1c2b35f1f7b..cbd2e3621b2 100644
Binary files a/icons/obj/doors/Doorplasma.dmi and b/icons/obj/doors/Doorplasma.dmi differ
diff --git a/icons/obj/doors/Doorsand.dmi b/icons/obj/doors/Doorsand.dmi
index 5cd8c2fc346..556524f4fe0 100644
Binary files a/icons/obj/doors/Doorsand.dmi and b/icons/obj/doors/Doorsand.dmi differ
diff --git a/icons/obj/doors/Doorsec.dmi b/icons/obj/doors/Doorsec.dmi
index b9add352ac1..9e98f085c8a 100644
Binary files a/icons/obj/doors/Doorsec.dmi and b/icons/obj/doors/Doorsec.dmi differ
diff --git a/icons/obj/doors/Doorsecglass.dmi b/icons/obj/doors/Doorsecglass.dmi
index 03171865755..399a262bfa9 100644
Binary files a/icons/obj/doors/Doorsecglass.dmi and b/icons/obj/doors/Doorsecglass.dmi differ
diff --git a/icons/obj/doors/Doorsilver.dmi b/icons/obj/doors/Doorsilver.dmi
index c8407240f3c..adc7250c311 100644
Binary files a/icons/obj/doors/Doorsilver.dmi and b/icons/obj/doors/Doorsilver.dmi differ
diff --git a/icons/obj/doors/Dooruranium.dmi b/icons/obj/doors/Dooruranium.dmi
index c7ff2e13c69..61a583b38b9 100644
Binary files a/icons/obj/doors/Dooruranium.dmi and b/icons/obj/doors/Dooruranium.dmi differ
diff --git a/icons/obj/doors/doorint.dmi b/icons/obj/doors/doorint.dmi
index 48ad907541a..7ef0f35ce7a 100644
Binary files a/icons/obj/doors/doorint.dmi and b/icons/obj/doors/doorint.dmi differ
diff --git a/icons/obj/doors/doormed.dmi b/icons/obj/doors/doormed.dmi
index e16dad099e6..3e131b5788b 100644
Binary files a/icons/obj/doors/doormed.dmi and b/icons/obj/doors/doormed.dmi differ
diff --git a/icons/obj/doors/doormedglass.dmi b/icons/obj/doors/doormedglass.dmi
index 250a82be855..397f0ced0db 100644
Binary files a/icons/obj/doors/doormedglass.dmi and b/icons/obj/doors/doormedglass.dmi differ
diff --git a/icons/obj/doors/doorresearch.dmi b/icons/obj/doors/doorresearch.dmi
index 24771c4114c..41db144b053 100644
Binary files a/icons/obj/doors/doorresearch.dmi and b/icons/obj/doors/doorresearch.dmi differ
diff --git a/icons/obj/doors/doorresearchglass.dmi b/icons/obj/doors/doorresearchglass.dmi
index 9bc2db4610c..2b7af93e396 100644
Binary files a/icons/obj/doors/doorresearchglass.dmi and b/icons/obj/doors/doorresearchglass.dmi differ
diff --git a/icons/obj/doors/doorsci.dmi b/icons/obj/doors/doorsci.dmi
index 679ee78566e..292fbb2753f 100644
Binary files a/icons/obj/doors/doorsci.dmi and b/icons/obj/doors/doorsci.dmi differ
diff --git a/icons/obj/doors/doorsciglass.dmi b/icons/obj/doors/doorsciglass.dmi
index faac0c19943..4aa1d358965 100644
Binary files a/icons/obj/doors/doorsciglass.dmi and b/icons/obj/doors/doorsciglass.dmi differ
diff --git a/icons/obj/doors/hightechsecurity.dmi b/icons/obj/doors/hightechsecurity.dmi
index d0e27509e12..9293dced77e 100644
Binary files a/icons/obj/doors/hightechsecurity.dmi and b/icons/obj/doors/hightechsecurity.dmi differ
diff --git a/icons/obj/doors/vault.dmi b/icons/obj/doors/vault.dmi
index 41aa3726ceb..5d1c25aa84a 100644
Binary files a/icons/obj/doors/vault.dmi and b/icons/obj/doors/vault.dmi differ
diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi
index d3f1557775e..6659b6ca513 100644
Binary files a/icons/obj/hydroponics.dmi and b/icons/obj/hydroponics.dmi differ
diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi
index fbe96a72628..7a7985b8189 100644
Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 9e19dd63388..41ae43c0e84 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -155,6 +155,7 @@
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
#include "code\datums\diseases\advance\symptoms\fever.dm"
#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
+#include "code\datums\diseases\advance\symptoms\genetics.dm"
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
#include "code\datums\diseases\advance\symptoms\headache.dm"
#include "code\datums\diseases\advance\symptoms\heal.dm"
@@ -249,10 +250,26 @@
#include "code\game\gamemodes\blob\blobs\resource.dm"
#include "code\game\gamemodes\blob\blobs\shield.dm"
#include "code\game\gamemodes\changeling\changeling.dm"
-#include "code\game\gamemodes\changeling\changeling_mutations.dm"
-#include "code\game\gamemodes\changeling\changeling_powers.dm"
-#include "code\game\gamemodes\changeling\modularchangling.dm"
+#include "code\game\gamemodes\changeling\changeling_power.dm"
+#include "code\game\gamemodes\changeling\evolution_menu.dm"
#include "code\game\gamemodes\changeling\traitor_chan.dm"
+#include "code\game\gamemodes\changeling\powers\absorb.dm"
+#include "code\game\gamemodes\changeling\powers\digitalcamo.dm"
+#include "code\game\gamemodes\changeling\powers\epinephrine.dm"
+#include "code\game\gamemodes\changeling\powers\fakedeath.dm"
+#include "code\game\gamemodes\changeling\powers\fleshmend.dm"
+#include "code\game\gamemodes\changeling\powers\glands.dm"
+#include "code\game\gamemodes\changeling\powers\hivemind.dm"
+#include "code\game\gamemodes\changeling\powers\humanform.dm"
+#include "code\game\gamemodes\changeling\powers\lesserform.dm"
+#include "code\game\gamemodes\changeling\powers\mimic_voice.dm"
+#include "code\game\gamemodes\changeling\powers\mutations.dm"
+#include "code\game\gamemodes\changeling\powers\panacea.dm"
+#include "code\game\gamemodes\changeling\powers\revive.dm"
+#include "code\game\gamemodes\changeling\powers\shriek.dm"
+#include "code\game\gamemodes\changeling\powers\spiders.dm"
+#include "code\game\gamemodes\changeling\powers\tiny_prick.dm"
+#include "code\game\gamemodes\changeling\powers\transform.dm"
#include "code\game\gamemodes\cult\cult.dm"
#include "code\game\gamemodes\cult\cult_items.dm"
#include "code\game\gamemodes\cult\cult_structures.dm"
@@ -425,6 +442,7 @@
#include "code\game\mecha\combat\honker.dm"
#include "code\game\mecha\combat\marauder.dm"
#include "code\game\mecha\combat\phazon.dm"
+#include "code\game\mecha\combat\reticence.dm"
#include "code\game\mecha\equipment\mecha_equipment.dm"
#include "code\game\mecha\equipment\tools\medical_tools.dm"
#include "code\game\mecha\equipment\tools\tools.dm"