@@ -447,7 +447,7 @@
|
||||
#include "code\game\jobs\jobs.dm"
|
||||
#include "code\game\jobs\whitelist.dm"
|
||||
#include "code\game\jobs\job\assistant.dm"
|
||||
#include "code\game\jobs\job\captian.dm"
|
||||
#include "code\game\jobs\job\captain.dm"
|
||||
#include "code\game\jobs\job\civilian.dm"
|
||||
#include "code\game\jobs\job\civilian_chaplain.dm"
|
||||
#include "code\game\jobs\job\engineering.dm"
|
||||
@@ -462,6 +462,7 @@
|
||||
#include "code\game\machinery\alarm.dm"
|
||||
#include "code\game\machinery\atmo_control.dm"
|
||||
#include "code\game\machinery\autolathe.dm"
|
||||
#include "code\game\machinery\Beacon.dm"
|
||||
#include "code\game\machinery\biogenerator.dm"
|
||||
#include "code\game\machinery\camera.dm"
|
||||
#include "code\game\machinery\camera_circuit.dm"
|
||||
@@ -995,6 +996,7 @@
|
||||
#include "code\modules\mob\organ\organ_internal.dm"
|
||||
#include "code\modules\mob\organ\pain.dm"
|
||||
#include "code\modules\mob\simple_animal\cat.dm"
|
||||
#include "code\modules\mob\simple_animal\constructs.dm"
|
||||
#include "code\modules\mob\simple_animal\corgi.dm"
|
||||
#include "code\modules\mob\simple_animal\crab.dm"
|
||||
#include "code\modules\mob\simple_animal\life.dm"
|
||||
|
||||
@@ -169,7 +169,6 @@ obj
|
||||
src.m_flag = 1
|
||||
if ((A != src.loc && A && A.z == src.z))
|
||||
src.last_move = get_dir(A, src.loc)
|
||||
src.moved_recently = 1
|
||||
return
|
||||
|
||||
/*
|
||||
|
||||
@@ -40,6 +40,33 @@
|
||||
var/wires = 15
|
||||
var/obj/item/weapon/coin/coin
|
||||
var/charge_type
|
||||
/*
|
||||
|
||||
/obj/machinery/vending/[vendors name here] // --vending machine template :)
|
||||
name = ""
|
||||
desc = ""
|
||||
icon = ''
|
||||
icon_state = ""
|
||||
product_paths = ""
|
||||
product_amounts = ""
|
||||
vend_delay = 15
|
||||
product_hidden = ""
|
||||
product_hideamt = ""
|
||||
product_slogans = ""
|
||||
product_ads = ""
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
/obj/machinery/vending/atmospherics //Commenting this out until someone ponies up some actual working, broken, and unpowered sprites - Quarxink
|
||||
name = "Tank Vendor"
|
||||
desc = "A vendor with a wide variety of masks and gas tanks."
|
||||
icon = 'objects.dmi'
|
||||
icon_state = "dispenser"
|
||||
product_paths = "/obj/item/weapon/tank/oxygen;/obj/item/weapon/tank/plasma;/obj/item/weapon/tank/emergency_oxygen;/obj/item/weapon/tank/emergency_oxygen/engi;/obj/item/clothing/mask/breath"
|
||||
product_amounts = "10;10;10;5;25"
|
||||
vend_delay = 0
|
||||
*/
|
||||
|
||||
/obj/machinery/vending/boozeomat
|
||||
name = "Booze-O-Mat"
|
||||
|
||||
@@ -936,6 +936,16 @@
|
||||
var/text_underline = 0
|
||||
var/text_break = 0
|
||||
|
||||
/obj/item/weapon/pen/blue
|
||||
desc = "It's a normal blue ink pen."
|
||||
icon_state = "pen_blue"
|
||||
text_color = "#00000F"
|
||||
|
||||
/obj/item/weapon/pen/red
|
||||
desc = "It's a normal red ink pen."
|
||||
icon_state = "pen_red"
|
||||
text_color = "#FF0000"
|
||||
|
||||
/obj/item/weapon/pen/multi
|
||||
desc = "It's a cool looking pen. Lots of colors!"
|
||||
name = "multicolor pen"
|
||||
@@ -1591,6 +1601,7 @@
|
||||
sides = 12
|
||||
icon_state = "d20"
|
||||
item_state = "dice"
|
||||
|
||||
/obj/item/weapon/pai_cable
|
||||
desc = "A flexible coated cable with a universal jack on one end."
|
||||
desc = "Some spacey cable."
|
||||
|
||||
@@ -291,4 +291,4 @@ datum/signal
|
||||
else
|
||||
. = "signal = {source = '[source]' ()\n"
|
||||
for (var/i in data)
|
||||
. += "data\[\"[i]\"\] = \"[data[i]]\"\n"
|
||||
. += "data\[\"[i]\"\] = \"[data[i]]\"\n"
|
||||
|
||||
@@ -170,7 +170,6 @@
|
||||
return 1
|
||||
if(special_action())
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
proc/consume_air()
|
||||
@@ -184,6 +183,7 @@
|
||||
if(temperature > T0C+200)
|
||||
health -= 0.01 * temperature
|
||||
update()
|
||||
|
||||
proc/expand(var/turf/T = null)
|
||||
if(!prob(health)) return//TODO: Change this to prob(health + o2 mols or such)
|
||||
if(!T)
|
||||
|
||||
@@ -237,7 +237,7 @@ datum/objective/block
|
||||
|
||||
|
||||
datum/objective/escape
|
||||
explanation_text = "Escape on the shuttle alive."
|
||||
explanation_text = "Escape on the shuttle or an escape pod alive."
|
||||
|
||||
|
||||
check_completion()
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
if ((usr.contents.Find(src) || (in_range(src,usr) && istype(src.loc, /turf))))
|
||||
usr.machine = src
|
||||
if(href_list["spell_choice"])
|
||||
if(src.uses >= 1 && href_list["spell_choice"] != 14)
|
||||
if(src.uses >= 1 && href_list["spell_choice"] != 16)
|
||||
src.uses--
|
||||
if(spell_type == "verb")
|
||||
switch(href_list["spell_choice"])
|
||||
@@ -125,49 +125,64 @@
|
||||
if(!already_knows)
|
||||
switch(href_list["spell_choice"])
|
||||
if ("1")
|
||||
feedback_add_details("wizard_spell_learned","MM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(usr)
|
||||
src.temp = "This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage."
|
||||
if ("2")
|
||||
feedback_add_details("wizard_spell_learned","FB") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/fireball(usr)
|
||||
src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you."
|
||||
// if ("3")
|
||||
// usr.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate(usr)
|
||||
// src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown."
|
||||
src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown."
|
||||
if ("4")
|
||||
feedback_add_details("wizard_spell_learned","DT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech(usr)
|
||||
src.temp = "This spell disables all weapons, cameras and most other technology in range."
|
||||
if ("5")
|
||||
feedback_add_details("wizard_spell_learned","SM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/smoke(usr)
|
||||
src.temp = "This spell spawns a cloud of choking smoke at your location and does not require wizard garb."
|
||||
if ("6")
|
||||
feedback_add_details("wizard_spell_learned","BD") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/trigger/blind(usr)
|
||||
src.temp = "This spell temporarly blinds a single person and does not require wizard garb."
|
||||
if ("7")
|
||||
feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(usr)
|
||||
src.temp = "This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process."
|
||||
if ("8")
|
||||
feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(usr)
|
||||
src.temp = "This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb."
|
||||
if ("9")
|
||||
feedback_add_details("wizard_spell_learned","BL") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(usr)
|
||||
src.temp = "This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience."
|
||||
if ("10")
|
||||
feedback_add_details("wizard_spell_learned","TP") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(usr)
|
||||
src.temp = "This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable."
|
||||
if ("11")
|
||||
feedback_add_details("wizard_spell_learned","MU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/genetic/mutate(usr)
|
||||
src.temp = "This spell causes you to turn into a hulk and gain telekinesis for a short while."
|
||||
if ("12")
|
||||
feedback_add_details("wizard_spell_learned","EJ") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(usr)
|
||||
src.temp = "This spell creates your ethereal form, temporarily making you invisible and able to pass through walls."
|
||||
if ("13")
|
||||
feedback_add_details("wizard_spell_learned","KN") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
usr.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/knock(usr)
|
||||
src.temp = "This spell opens nearby doors and does not require wizard garb."
|
||||
if ("14")
|
||||
feedback_add_details("wizard_spell_learned","ST") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
new /obj/item/weapon/gun/energy/staff(get_turf(usr))
|
||||
src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
||||
src.max_uses--
|
||||
if ("15")
|
||||
feedback_add_details("wizard_spell_learned","SS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
new /obj/item/weapon/storage/belt/soulstone/full(get_turf(usr))
|
||||
src.temp = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying"
|
||||
src.max_uses--
|
||||
@@ -177,6 +192,7 @@
|
||||
src.uses = src.max_uses
|
||||
usr.spellremove(usr,spell_type)
|
||||
src.temp = "All spells have been removed. You may now memorize a new set of spells."
|
||||
feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
|
||||
else
|
||||
src.temp = "You may only re-memorize spells whilst located inside the wizard sanctuary."
|
||||
else
|
||||
@@ -362,4 +378,4 @@
|
||||
|
||||
del(src.master)
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
/datum/job/captain
|
||||
title = "Captain"
|
||||
flag = CAPTAIN
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "Nanotrasen officials and Space law"
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(H), H.slot_ears)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/captain(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/device/pda/captain(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/caphat(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
|
||||
var/datum/organ/external/O = H.organs[pick(H.organs)]
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(O)
|
||||
O.implant += L
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
world << "<b>[H.real_name] is the captain!</b>"
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/datum/job/hop
|
||||
title = "Head of Personnel"
|
||||
flag = HOP
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the captain"
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(H), H.slot_ears)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/heads/hop(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/blue(H), H.slot_gloves)
|
||||
return 1
|
||||
/datum/job/captain
|
||||
title = "Captain"
|
||||
flag = CAPTAIN
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "Nanotrasen officials and Space law"
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(H), H.slot_ears)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/captain(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/device/pda/captain(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/caphat(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(H), H.slot_glasses)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
|
||||
var/datum/organ/external/O = H.organs[pick(H.organs)]
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(O)
|
||||
O.implant += L
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
world << "<b>[H.real_name] is the captain!</b>"
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/datum/job/hop
|
||||
title = "Head of Personnel"
|
||||
flag = HOP
|
||||
department_flag = CIVILIAN
|
||||
faction = "Station"
|
||||
total_positions = 1
|
||||
spawn_positions = 1
|
||||
supervisors = "the captain"
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(H), H.slot_ears)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_personnel(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/heads/hop(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/id_kit(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/blue(H), H.slot_gloves)
|
||||
return 1
|
||||
@@ -49,7 +49,7 @@
|
||||
H.equip_if_possible(new /obj/item/clothing/under/rank/warden(H), H.slot_w_uniform)
|
||||
H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes)
|
||||
H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/suit/armor/vest/warden(H), H.slot_wear_suit)
|
||||
H.equip_if_possible(new /obj/item/clothing/head/helmet/warden(H), H.slot_head)
|
||||
H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves)
|
||||
H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
spawn_positions = 1
|
||||
|
||||
supervisors = "your laws and the AI" //Nodrak
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/obj/machinery/bluespace_beacon
|
||||
|
||||
icon = 'objects.dmi'
|
||||
icon_state = "floor_beaconf"
|
||||
name = "Bluespace Gigabeacon"
|
||||
desc = "A device that draws power from bluespace and creates a permanent tracking beacon."
|
||||
level = 1 // underfloor
|
||||
layer = 2.5
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 0
|
||||
var/obj/item/device/radio/beacon/Beacon
|
||||
|
||||
New()
|
||||
..()
|
||||
var/turf/T = loc
|
||||
Beacon = new /obj/item/device/radio/beacon
|
||||
Beacon.invisibility = 100
|
||||
Beacon.loc = T
|
||||
|
||||
hide(T.intact)
|
||||
|
||||
Del()
|
||||
if(Beacon)
|
||||
del(Beacon)
|
||||
..()
|
||||
|
||||
// update the invisibility and icon
|
||||
hide(var/intact)
|
||||
invisibility = intact ? 101 : 0
|
||||
updateicon()
|
||||
|
||||
// update the icon_state
|
||||
proc/updateicon()
|
||||
var/state="floor_beacon"
|
||||
|
||||
if(invisibility)
|
||||
icon_state = "[state]f"
|
||||
|
||||
else
|
||||
icon_state = "[state]"
|
||||
|
||||
process()
|
||||
if(!Beacon)
|
||||
var/turf/T = loc
|
||||
Beacon = new /obj/item/device/radio/beacon
|
||||
Beacon.invisibility = 100
|
||||
Beacon.loc = T
|
||||
if(Beacon)
|
||||
if(Beacon.loc != loc)
|
||||
Beacon.loc = loc
|
||||
|
||||
updateicon()
|
||||
|
||||
|
||||
@@ -565,13 +565,13 @@
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
if(2)
|
||||
process_bot()
|
||||
spawn(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
process_bot()
|
||||
sleep(2)
|
||||
spawn(4)
|
||||
process_bot()
|
||||
if(3)
|
||||
process_bot()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(!charging || (stat & (BROKEN|NOPOWER)) )
|
||||
return
|
||||
|
||||
var/added = charging.give(50)
|
||||
var/added = charging.give(500)
|
||||
use_power(added / CELLRATE)
|
||||
|
||||
updateicon()
|
||||
@@ -7,10 +7,10 @@
|
||||
var/name_part1
|
||||
var/name_part2
|
||||
|
||||
name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Rape ", "Pwn ", "Own ")
|
||||
name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ")
|
||||
|
||||
name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Faggot ", "Duke ", "General ")
|
||||
name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "Metroid", "Griefer", "ERPer", "Homosexual", "Lizard Man", "Unicorn")
|
||||
name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ")
|
||||
name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "Metroid", "Griefer", "ERPer", "Lizard Man", "Unicorn")
|
||||
|
||||
src.enemy_name = dd_replacetext((name_part1 + name_part2), "the ", "")
|
||||
src.name = (name_action + name_part1 + name_part2)
|
||||
|
||||
@@ -163,7 +163,7 @@ to destroy them and players will be able to make replacements.
|
||||
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
|
||||
board_type = "machine"
|
||||
origin_tech = "magnets=2;engineering=2;programming=2"
|
||||
frame_desc = "Requires 2 Scanning Modules, 1 Manipulator, and 1 Micro-Laser."
|
||||
frame_desc = "Requires 1 Scanning Module, 1 Manipulator, and 1 Micro-Laser."
|
||||
req_components = list(
|
||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
||||
|
||||
@@ -70,6 +70,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
|
||||
var
|
||||
aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
|
||||
hackProof = 0 // if 1, this door can't be hacked by the AI
|
||||
synDoorHacked = 0 // Has it been hacked? bool 1 = yes / 0 = no
|
||||
synHacking = 0 // Is hack in process y/n?
|
||||
secondsMainPowerLost = 0 //The number of seconds until power is restored.
|
||||
@@ -812,7 +813,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
|
||||
|
||||
canAIHack()
|
||||
return ((src.aiControlDisabled==1) && (!src.isAllPowerCut()));
|
||||
return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerCut()));
|
||||
|
||||
|
||||
canSynControl()
|
||||
|
||||
@@ -113,6 +113,10 @@
|
||||
|
||||
"Misc"=list(/obj/item/mecha_parts/mecha_tracking)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
component_parts = list()
|
||||
@@ -408,6 +412,12 @@
|
||||
|
||||
|
||||
proc/sync(silent=null)
|
||||
if(queue.len)
|
||||
if(!silent)
|
||||
temp = "Error. Please clear processing queue before updating!"
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
if(!silent)
|
||||
temp = "Updating local R&D database..."
|
||||
src.updateUsrDialog()
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
for(var/obj/item/I in src)
|
||||
I.loc = src.loc
|
||||
|
||||
for(var/obj/mecha/working/ripley/deathripley/I in src)
|
||||
I.loc = src.loc
|
||||
|
||||
for(var/mob/M in src)
|
||||
M.loc = src.loc
|
||||
if(M.client)
|
||||
@@ -54,6 +57,9 @@
|
||||
if(!I.anchored)
|
||||
I.loc = src
|
||||
|
||||
for(var/obj/mecha/working/ripley/deathripley/I in src.loc)
|
||||
I.loc = src
|
||||
|
||||
for(var/mob/M in src.loc)
|
||||
if(istype (M, /mob/dead/observer))
|
||||
continue
|
||||
|
||||
@@ -1,3 +1,24 @@
|
||||
/obj/structure/closet/secure_closet/cargotech
|
||||
name = "Cargo Technician's Locker"
|
||||
req_access = list(access_cargo)
|
||||
//icon_state = "secureeng1"
|
||||
//icon_closed = "secureeng"
|
||||
//icon_locked = "secureeng1"
|
||||
//icon_opened = "toolclosetopen"
|
||||
//icon_broken = "secureengbroken"
|
||||
//icon_off = "secureengoff"
|
||||
|
||||
//Needs proper sprites
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/under/rank/cargo(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/device/radio/headset/headset_cargo(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/weapon/cartridge/quartermaster(src)
|
||||
return
|
||||
|
||||
/obj/structure/closet/secure_closet/qm_personal
|
||||
name = "Quartermaster's Locker"
|
||||
|
||||
@@ -278,6 +278,7 @@ MASS SPECTROMETER
|
||||
throw_range = 10
|
||||
m_amt = 200
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
var/mode = 1;
|
||||
|
||||
proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
|
||||
@@ -285,10 +286,19 @@ proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, "dead"), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
else
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health))), 1)
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health - M.halloss))), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.getFireLoss() > 50 ? "\red[M.getFireLoss()]" : M.getFireLoss(), M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1)
|
||||
user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/damaged = H.get_damaged_organs(1,1)
|
||||
user.show_message("\blue Localized Damage, Brute/Burn:",1)
|
||||
if(length(damaged)>0)
|
||||
for(var/datum/organ/external/org in damaged)
|
||||
user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
|
||||
else
|
||||
user.show_message("\blue \t Limbs are OK.",1)
|
||||
if((M.changeling && M.changeling.changeling_fakedeath) || (M.reagents && M.reagents.has_reagent("zombiepowder")))
|
||||
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.getFireLoss() > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
else
|
||||
@@ -348,6 +358,17 @@ proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
set name = "Switch Verbosity"
|
||||
set category = "Object"
|
||||
|
||||
mode = !mode
|
||||
switch (mode)
|
||||
if(1)
|
||||
usr << "The scanner now shows specific limb damage."
|
||||
if(0)
|
||||
usr << "The scanner no longer shows limb damage."
|
||||
|
||||
|
||||
/obj/item/device/analyzer
|
||||
desc = "A hand-held environmental scanner which reports current gas levels."
|
||||
|
||||
@@ -81,6 +81,15 @@
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
attack_animal(var/mob/living/simple_animal/M as mob)
|
||||
if(M.melee_damage_upper == 0) return
|
||||
playsound(src.loc, 'grillehit.ogg', 80, 1)
|
||||
M.visible_message("[M.name] smashes against the [src.name].", \
|
||||
"You smash against the [src.name].", \
|
||||
"You hear a noise")
|
||||
src.health -= rand(4)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0)) return 1
|
||||
|
||||
@@ -405,6 +405,7 @@
|
||||
else if(temp_sides == 20 && result == 1)
|
||||
comment = "Ouch, bad luck."
|
||||
user << text("\red You throw a [src]. It lands on a [result]. [comment]")
|
||||
icon_state = "[name][result]"
|
||||
for(var/mob/O in viewers(user, null))
|
||||
if(O == (user))
|
||||
continue
|
||||
|
||||
@@ -181,21 +181,22 @@
|
||||
force = 5.0
|
||||
w_class = 3.0
|
||||
var
|
||||
datum/effect/effect/system/spark_spread/spark_system
|
||||
// datum/effect/effect/system/spark_spread/spark_system
|
||||
working = 0
|
||||
mode = 1
|
||||
disabled = 0
|
||||
|
||||
|
||||
/*
|
||||
New()
|
||||
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
return
|
||||
|
||||
*/
|
||||
|
||||
proc/activate()
|
||||
spark_system.set_up(5, 0, src)
|
||||
src.spark_system.start()
|
||||
// spark_system.set_up(5, 0, src)
|
||||
// src.spark_system.start()
|
||||
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
|
||||
|
||||
|
||||
@@ -205,22 +206,26 @@
|
||||
if(mode == 1)
|
||||
mode = 2
|
||||
user << "Changed mode to 'Airlock'"
|
||||
src.spark_system.start()
|
||||
// src.spark_system.start()
|
||||
return
|
||||
if(mode == 2)
|
||||
mode = 3
|
||||
user << "Changed mode to 'Deconstruct'"
|
||||
src.spark_system.start()
|
||||
// src.spark_system.start()
|
||||
return
|
||||
if(mode == 3)
|
||||
mode = 1
|
||||
user << "Changed mode to 'Floor & Walls'"
|
||||
src.spark_system.start()
|
||||
// src.spark_system.start()
|
||||
return
|
||||
|
||||
|
||||
afterattack(atom/A, mob/user as mob)
|
||||
if(!isrobot(user)) return
|
||||
if(istype(A,/area/shuttle))//||istype(A,/turf/space/transit))//No RCDs on the shuttles -Sieve
|
||||
disabled = 1
|
||||
else
|
||||
disabled = 0
|
||||
if(!isrobot(user)|| disabled == 1) return
|
||||
if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock))) return
|
||||
|
||||
var/mob/living/silicon/robot/R = user
|
||||
@@ -268,13 +273,7 @@
|
||||
A:ReplaceWithPlating()
|
||||
return
|
||||
|
||||
if(istype(A, /turf/simulated/wall/r_wall))
|
||||
if(!cell.use(300)) return
|
||||
user << "Deconstructing RWall..."
|
||||
playsound(src.loc, 'click.ogg', 50, 1)
|
||||
if(do_after(user, 60))
|
||||
activate()
|
||||
A:ReplaceWithWall()
|
||||
if(istype(A, /turf/simulated/wall/r_wall)) //by order of muskets -pete
|
||||
return
|
||||
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
|
||||
@@ -306,6 +306,14 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
<li>Install the external reinforced armor plating (Not included due to NanoTrasen regulations. Can be made using 5 reinforced metal sheets.)</li>
|
||||
<li>Secure the external reinforced armor plating with a wrench</li>
|
||||
<li>Weld the external reinforced armor plating to the chassis</li>
|
||||
<li></li>
|
||||
<li>Additional Information:</li>
|
||||
<li>The firefighting variation is made in a similar fashion.</li>
|
||||
<li>A firesuit must be connected to the Firefighter chassis for heat shielding.</li>
|
||||
<li>Internal armor is plasteel for additional strength.</li>
|
||||
<li>External armor must be installed in 2 parts, totaling 10 sheets.</li>
|
||||
<li>Completed mech is more resiliant against fire, and is a bit more durable overall</li>
|
||||
<li>Nanotrasen is determined to the safety of its <s>investments</s> employees.</li>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
@@ -343,7 +351,7 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
Those are the basic steps to furthing science. What do you do science with, however? Well, you have four major tools: R&D Console, the Destructive Analyzer, the Protolathe, and the Circuit Imprinter.
|
||||
|
||||
<h2>The R&D Console</h2>
|
||||
The R&D console is the cornerstone of any research lab. It is the central system from which the Destructive Analyzer, Protolathe, and Circuit Imprinter (your R&D systems) are controled. More on those systems in their own sections. On it's own, the R&D console acts as a database for all your technological gains and new devices you discover. So long as the R&D console remains intact, you'll retain all that SCIENCE you've discovered. Protect it though, because if it gets damaged, you'll lose your data! In addition to this important purpose, the R&D console has a disk menu that lets you transfer data from the database onto disk or from the disk into the database. It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database.
|
||||
The R&D console is the cornerstone of any research lab. It is the central system from which the Destructive Analyzer, Protolathe, and Circuit Imprinter (your R&D systems) are controled. More on those systems in their own sections. On its own, the R&D console acts as a database for all your technological gains and new devices you discover. So long as the R&D console remains intact, you'll retain all that SCIENCE you've discovered. Protect it though, because if it gets damaged, you'll lose your data! In addition to this important purpose, the R&D console has a disk menu that lets you transfer data from the database onto disk or from the disk into the database. It also has a settings menu that lets you re-sync with nearby R&D devices (if they've become disconnected), lock the console from the unworthy, upload the data to all other R&D consoles in the network (all R&D consoles are networked by default), connect/disconnect from the network, and purge all data from the database.
|
||||
<b>NOTE:</b> The technology list screen, circuit imprinter, and protolathe menus are accessible by non-scientists. This is intended to allow 'public' systems for the plebians to utilize some new devices.
|
||||
|
||||
<h2>Destructive Analyzer</h2>
|
||||
@@ -359,7 +367,7 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
As it has been stated, many devices when they're first discovered do not have a 100% reliablity when you first discover them. Instead, the reliablity of the device is dependent upon a base reliability value, whatever improvements to the design you've discovered through the Destructive Analyzer, and any advancements you've made with the device's source technologies. To be able to improve the reliability of a device, you have to use the device until it breaks beyond repair. Once that happens, you can analyze it in a Destructive Analyzer. Once the device reachs a certain minimum reliability, you'll gain tech advancements from it.
|
||||
|
||||
<h1>Building a Better Machine</h1>
|
||||
Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, it's attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine.
|
||||
Many machines produces from circuit boards and inserted into a machine frame require a variety of parts to construct. These are parts like capacitors, batteries, matter bins, and so forth. As your knowledge of science improves, more advanced versions are unlocked. If you use these parts when constructing something, its attributes may be improved. For example, if you use an advanced matter bin when constructing an autolathe (rather then a regular one), it'll hold more materials. Experiment around with stock parts of various qualities to see how they affect the end results! Be warned, however: Tier 3 and higher stock parts don't have 100% reliability and their low reliability may affect the reliability of the end machine.
|
||||
</body>
|
||||
</html>
|
||||
"}
|
||||
@@ -410,7 +418,7 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
|
||||
|
||||
<h2><a name="Modules">Cyborg Modules</h2>
|
||||
When a cyborg is created it picks out of an array of modules to designate it's purpose. There are 6 different cyborg modules.
|
||||
When a cyborg is created it picks out of an array of modules to designate its purpose. There are 6 different cyborg modules.
|
||||
|
||||
<h3>Standard Cyborg</h3>
|
||||
The standard cyborg module is a multi-purpose cyborg. It is equipped with various modules, allowing it to do basic tasks.<br>A Standard Cyborg comes with:
|
||||
@@ -584,7 +592,7 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
|
||||
</html>
|
||||
|
||||
"}
|
||||
"}
|
||||
|
||||
/obj/item/weapon/book/manual/engineering_guide
|
||||
name = "Engineering Textbook"
|
||||
@@ -680,37 +688,37 @@ It is caused by the unexpected circumstances after awakening in cryo (if cloned
|
||||
author = "NanoTrasen"
|
||||
|
||||
dat = {"<html>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
h2 {font-size: 15px; margin: 15px 0px 5px;}
|
||||
li {margin: 2px 0px 2px 15px;}
|
||||
ul {list-style: none; margin: 5px; padding: 0px;}
|
||||
ol {margin: 5px; padding: 0px 15px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h3>Detective Work</h3>
|
||||
<head>
|
||||
<style>
|
||||
h1 {font-size: 18px; margin: 15px 0px 5px;}
|
||||
h2 {font-size: 15px; margin: 15px 0px 5px;}
|
||||
li {margin: 2px 0px 2px 15px;}
|
||||
ul {list-style: none; margin: 5px; padding: 0px;}
|
||||
ol {margin: 5px; padding: 0px 15px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h3>Detective Work</h3>
|
||||
|
||||
Between your bouts of self-narration, and drinking whiskey on the rocks, you might get a case or two to solve.<br>
|
||||
To have the best chance to solve your case, follow these directions:
|
||||
<p>
|
||||
<ol>
|
||||
<li>Go to the crime scene. </li>
|
||||
<li>Take your scanner and scan EVERYTHING (Yes, the doors, the tables, even the dog.) </li>
|
||||
<li>Once you are reasonably certain you have every scrap of evidence you can use, find all possible entry points and scan them, too. </li>
|
||||
<li>Return to your office. </li>
|
||||
<li>Using your forensic scanning computer, scan your Scanner to upload all of your evidence into the database.</li>
|
||||
<li>Browse through the resulting dossiers, looking for the one that either has the most complete set of prints, or the most suspicious items handled. </li>
|
||||
<li>If you have 80% or more of the print (The print is displayed) go to step 10, otherwise continue to step 8.</li>
|
||||
<li>Look for clues from the suit fibres you found on your perp, and go about looking for more evidence with this new information, scanning as you go. </li>
|
||||
<li>Try to get a fingerprint card of your perp, as if used in the computer, the prints will be completed on their dossier.</li>
|
||||
<li>Assuming you have enough of a print to see it, grab the biggest complete piece of the print and search the security records for it. </li>
|
||||
<li>Since you now have both your dossier and the name of the person, print both out as evidence, and get security to nab your baddie.</li>
|
||||
<li>Give yourself a pat on the back and a bottle of the ships finest vodka, you did it!. </li>
|
||||
</ol>
|
||||
<p>
|
||||
It really is that easy! Good luck!
|
||||
Between your bouts of self-narration, and drinking whiskey on the rocks, you might get a case or two to solve.<br>
|
||||
To have the best chance to solve your case, follow these directions:
|
||||
<p>
|
||||
<ol>
|
||||
<li>Go to the crime scene. </li>
|
||||
<li>Take your scanner and scan EVERYTHING (Yes, the doors, the tables, even the dog.) </li>
|
||||
<li>Once you are reasonably certain you have every scrap of evidence you can use, find all possible entry points and scan them, too. </li>
|
||||
<li>Return to your office. </li>
|
||||
<li>Using your forensic scanning computer, scan your Scanner to upload all of your evidence into the database.</li>
|
||||
<li>Browse through the resulting dossiers, looking for the one that either has the most complete set of prints, or the most suspicious items handled. </li>
|
||||
<li>If you have 80% or more of the print (The print is displayed) go to step 10, otherwise continue to step 8.</li>
|
||||
<li>Look for clues from the suit fibres you found on your perp, and go about looking for more evidence with this new information, scanning as you go. </li>
|
||||
<li>Try to get a fingerprint card of your perp, as if used in the computer, the prints will be completed on their dossier.</li>
|
||||
<li>Assuming you have enough of a print to see it, grab the biggest complete piece of the print and search the security records for it. </li>
|
||||
<li>Since you now have both your dossier and the name of the person, print both out as evidence, and get security to nab your baddie.</li>
|
||||
<li>Give yourself a pat on the back and a bottle of the ships finest vodka, you did it!. </li>
|
||||
</ol>
|
||||
<p>
|
||||
It really is that easy! Good luck!
|
||||
|
||||
</body>
|
||||
</html>"}
|
||||
</body>
|
||||
</html>"}
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "plantbag"
|
||||
name = "Plant Bag"
|
||||
var/mode = 1; //0 = pick one at a time, 1 = pick all on tile
|
||||
var/capacity = 10; //the number of plant pieces it can carry.
|
||||
var/capacity = 50; //the number of plant pieces it can carry.
|
||||
flags = FPRINT | TABLEPASS | ONBELT
|
||||
w_class = 1
|
||||
|
||||
|
||||
@@ -130,8 +130,12 @@
|
||||
var/mob/M = src.loc
|
||||
var/turf/T = M.loc
|
||||
if ((istype(T, /turf)))
|
||||
if (M.moved_recently && M.last_move)
|
||||
if (!M.moved_recently && M.last_move)
|
||||
M.moved_recently = 1
|
||||
step(M, M.last_move)
|
||||
sleep 50
|
||||
if(M)
|
||||
M.moved_recently = 0
|
||||
M.show_message("\red <B>You feel a sharp shock!</B>")
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, M)
|
||||
|
||||
@@ -138,6 +138,30 @@
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
/obj/structure/window/attack_animal(mob/living/simple_animal/M as mob)
|
||||
if (M.melee_damage_upper == 0)
|
||||
return
|
||||
M << text("\green You smash against the window.")
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << text("\red [] smashes against the window.", M)
|
||||
playsound(src.loc, 'Glasshit.ogg', 100, 1)
|
||||
src.health -= M.melee_damage_upper
|
||||
if(src.health <= 0)
|
||||
M << text("\green You smash through the window.")
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << text("\red [] smashes through the window!", M)
|
||||
src.health = 0
|
||||
new /obj/item/weapon/shard(src.loc)
|
||||
if(reinf)
|
||||
new /obj/item/stack/rods(src.loc)
|
||||
src.density = 0
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/structure/window/attack_metroid()
|
||||
if(!istype(usr, /mob/living/carbon/metroid/adult))
|
||||
return
|
||||
|
||||
@@ -65,6 +65,23 @@ var/list/supply_groups = new()
|
||||
if (prob(5))
|
||||
del(src)
|
||||
|
||||
/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates
|
||||
name = "\improper Airtight plastic flaps"
|
||||
desc = "Heavy duty, airtight, plastic flaps."
|
||||
|
||||
New() //set the turf below the flaps to block air
|
||||
var/turf/T = get_turf(src.loc)
|
||||
if(T)
|
||||
T.blocks_air = 1
|
||||
..()
|
||||
|
||||
Del() //lazy hack to set the turf to allow air to pass if it's a simulated floor
|
||||
var/turf/T = get_turf(src.loc)
|
||||
if(T)
|
||||
if(istype(T, /turf/simulated/floor))
|
||||
T.blocks_air = 0
|
||||
..()
|
||||
|
||||
/area/supplyshuttle
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "supply"
|
||||
|
||||
@@ -136,6 +136,12 @@
|
||||
if(O.level == 1)
|
||||
O.hide(0)
|
||||
|
||||
// Removes all signs of lattice on the pos of the turf -Donkieyo
|
||||
/turf/proc/RemoveLattice()
|
||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||
if(L)
|
||||
del L
|
||||
|
||||
/turf/proc/ReplaceWithFloor(explode=0)
|
||||
var/prior_icon = icon_old
|
||||
var/old_dir = dir
|
||||
@@ -144,6 +150,7 @@
|
||||
del(L)
|
||||
var/turf/simulated/floor/W = new /turf/simulated/floor( locate(src.x, src.y, src.z) )
|
||||
|
||||
W.RemoveLattice()
|
||||
W.dir = old_dir
|
||||
if(prior_icon) W.icon_state = prior_icon
|
||||
else W.icon_state = "floor"
|
||||
@@ -164,6 +171,7 @@
|
||||
del(L)
|
||||
var/turf/simulated/floor/plating/W = new /turf/simulated/floor/plating( locate(src.x, src.y, src.z) )
|
||||
|
||||
W.RemoveLattice()
|
||||
W.dir = old_dir
|
||||
if(prior_icon) W.icon_state = prior_icon
|
||||
else W.icon_state = "plating"
|
||||
@@ -347,6 +355,24 @@
|
||||
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/turf/simulated/wall/attack_animal(mob/living/simple_animal/M as mob)
|
||||
if(M.wall_smash)
|
||||
if (istype(src, /turf/simulated/wall/r_wall))
|
||||
M << text("\blue This wall is far too strong for you to destroy.")
|
||||
return
|
||||
else
|
||||
if (prob(40))
|
||||
M << text("\blue You smash through the wall.")
|
||||
dismantle_wall(1)
|
||||
return
|
||||
else
|
||||
M << text("\blue You smash against the wall.")
|
||||
return
|
||||
|
||||
M << "\blue You push the wall but nothing happens!"
|
||||
return
|
||||
|
||||
/turf/simulated/wall/attack_hand(mob/user as mob)
|
||||
if ((user.mutations & HULK))
|
||||
if (prob(40))
|
||||
|
||||
@@ -562,6 +562,20 @@ var/global/BSACooldown = 0
|
||||
alert("The AI can't be monkeyized!", null, null, null, null, null)
|
||||
return
|
||||
|
||||
if (href_list["corgione"])
|
||||
if ((src.rank in list( "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/mob/M = locate(href_list["corgione"])
|
||||
if(!ismob(M))
|
||||
return
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/N = M
|
||||
log_admin("[key_name(usr)] attempting to corgize [key_name(M)]")
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to corgize [key_name_admin(M)]", 1)
|
||||
N.corgize()
|
||||
if(istype(M, /mob/living/silicon))
|
||||
alert("The AI can't be corgized!", null, null, null, null, null)
|
||||
return
|
||||
|
||||
if (href_list["forcespeech"])
|
||||
if ((src.rank in list( "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/mob/M = locate(href_list["forcespeech"])
|
||||
@@ -1287,6 +1301,13 @@ var/global/BSACooldown = 0
|
||||
spawn(0)
|
||||
H.monkeyize()
|
||||
ok = 1
|
||||
if("corgi")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","M")
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
spawn(0)
|
||||
H.corgize()
|
||||
ok = 1
|
||||
if("power")
|
||||
log_admin("[key_name(usr)] made all areas powered", 1)
|
||||
message_admins("\blue [key_name_admin(usr)] made all areas powered", 1)
|
||||
@@ -1927,6 +1948,10 @@ var/global/BSACooldown = 0
|
||||
foo += text("<A HREF='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | ")
|
||||
else
|
||||
foo += text("<B>Monkeyized</B> | ")
|
||||
if(!iscorgi(M))
|
||||
foo += text("<A HREF='?src=\ref[src];corgione=\ref[M]'>Corgize</A> | ")
|
||||
else
|
||||
foo += text("<B>Corgized</B> | ")
|
||||
if(isAI(M))
|
||||
foo += text("<B>Is an AI</B> | ")
|
||||
else if(ishuman(M))
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
verbs += /client/proc/jumptokey
|
||||
verbs += /client/proc/jumptomob
|
||||
verbs += /client/proc/jumptoturf
|
||||
|
||||
verbs += /client/proc/jumptocoord
|
||||
verbs += /client/proc/cmd_admin_add_freeform_ai_law
|
||||
verbs += /client/proc/cmd_admin_rejuvenate
|
||||
verbs += /client/proc/cmd_admin_drop_everything
|
||||
@@ -213,6 +213,7 @@
|
||||
verbs += /client/proc/togglebuildmodeself
|
||||
verbs += /client/proc/hide_most_verbs
|
||||
verbs += /client/proc/tension_report
|
||||
verbs += /client/proc/jumptocoord
|
||||
|
||||
if (holder.level >= 3)//Trial Admin********************************************************************
|
||||
verbs += /obj/admins/proc/toggleaban //abandon mob
|
||||
@@ -921,4 +922,4 @@
|
||||
C.CarbonCopy2(NewObj)
|
||||
else
|
||||
NewObj.vars[V] = vars[V]
|
||||
return NewObj
|
||||
return NewObj
|
||||
|
||||
@@ -51,6 +51,24 @@
|
||||
message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1)
|
||||
else
|
||||
A << "This mob is not located in the game world."
|
||||
|
||||
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
|
||||
set category = "Admin"
|
||||
set name = "Jump to Coordinate"
|
||||
|
||||
if (!holder)
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
|
||||
if (config.allow_admin_jump)
|
||||
if(src.mob)
|
||||
var/mob/A = src.mob
|
||||
A.x = tx
|
||||
A.y = ty
|
||||
A.z = tz
|
||||
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
|
||||
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
|
||||
|
||||
@@ -42,6 +42,13 @@ datum
|
||||
required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
stoxin
|
||||
name = "Sleep Toxin"
|
||||
id = "stoxin"
|
||||
result = "stoxin"
|
||||
required_reagents = list("chloralhydrate" = 1, "sugar" = 4)
|
||||
result_amount = 5
|
||||
|
||||
sterilizine
|
||||
name = "Sterilizine"
|
||||
id = "sterilizine"
|
||||
|
||||
@@ -3003,13 +3003,13 @@
|
||||
..()
|
||||
reagents.add_reagent("dexalin", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/bicardine
|
||||
name = "Bicardine pill"
|
||||
/obj/item/weapon/reagent_containers/pill/bicaridine
|
||||
name = "Bicaridine pill"
|
||||
desc = "Used to treat physical injuries."
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bicardine", 15)
|
||||
reagents.add_reagent("bicaridine", 15)
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
|
||||
@@ -548,6 +548,21 @@ obj/item/clothing/suit/justice
|
||||
item_state = "justice"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/under/gladiator
|
||||
name = "gladiator uniform"
|
||||
desc = "Are you not entertained? Is that not why you are here?"
|
||||
icon_state = "gladiator"
|
||||
item_state = "gladiator"
|
||||
color = "gladiator"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/head/helmet/gladiator
|
||||
name = "gladiator helmet"
|
||||
desc = "Ave, Imperator, morituri te salutant."
|
||||
icon_state = "gladiator"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
item_state="gladiator"
|
||||
|
||||
//stylish new hats
|
||||
|
||||
/obj/item/clothing/head/bowlerhat
|
||||
|
||||
@@ -13,6 +13,11 @@
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/warden
|
||||
name = "Warden's jacket"
|
||||
desc = "An armoured jacket with silver rank pips and livery."
|
||||
icon_state = "warden_jacket"
|
||||
item_state = "armor"
|
||||
|
||||
/obj/item/clothing/suit/armor/riot
|
||||
name = "Riot Suit"
|
||||
|
||||
@@ -415,6 +415,19 @@
|
||||
name = "brainburger"
|
||||
desc = "A strange looking burger. It looks almost sentient."
|
||||
icon_state = "brainburger"
|
||||
New()
|
||||
..()
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ghostburger
|
||||
name = "Ghost Burger"
|
||||
desc = "Spooky! It doesn't look very filling."
|
||||
icon_state = "ghostburger"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
bitesize = 2
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human
|
||||
var/hname = ""
|
||||
|
||||
@@ -109,6 +109,12 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu
|
||||
/datum/recipe/ghostburger
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/ectoplasm
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/ghostburger
|
||||
|
||||
/datum/recipe/clownburger
|
||||
items = list(
|
||||
|
||||
@@ -181,25 +181,62 @@
|
||||
|
||||
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
|
||||
if (src.health > 0)
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (src.gender == FEMALE)
|
||||
t_him = "her"
|
||||
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.w_uniform.add_fingerprint(M)
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping = 0
|
||||
src.resting = 0
|
||||
AdjustParalysis(-3)
|
||||
AdjustStunned(-3)
|
||||
AdjustWeakened(-3)
|
||||
playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
|
||||
M.visible_message( \
|
||||
"\blue [M] shakes [src] trying to wake [t_him] up!", \
|
||||
"\blue You shake [src] trying to wake [t_him] up!", \
|
||||
)
|
||||
if(src == M && istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/list/damaged = H.get_damaged_organs(1,1)
|
||||
src.visible_message( \
|
||||
text("\blue [src] examines [].",src.gender==MALE?"himself":"herself"), \
|
||||
"\blue You check yourself for injuries." \
|
||||
)
|
||||
|
||||
for(var/datum/organ/external/org in damaged)
|
||||
var/status = ""
|
||||
var/brutedamage = org.brute_dam
|
||||
var/burndamage = org.burn_dam
|
||||
if(halloss > 0)
|
||||
if(prob(30))
|
||||
brutedamage += halloss
|
||||
if(prob(30))
|
||||
burndamage += halloss
|
||||
if(brutedamage > 0)
|
||||
status = "bruised"
|
||||
if(brutedamage > 20)
|
||||
status = "bleeding"
|
||||
if(brutedamage > 40)
|
||||
status = "mangled"
|
||||
if(brutedamage > 0 && burndamage > 0)
|
||||
status += " and "
|
||||
if(burndamage > 40)
|
||||
status += "peeling away"
|
||||
else if(burndamage > 10)
|
||||
status += "blistered"
|
||||
else if(burndamage > 0)
|
||||
status += "numb"
|
||||
if(status == "")
|
||||
status = "OK"
|
||||
src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.getDisplayName(),status),1)
|
||||
src.show_message(text("\blue You finish checking yourself."),1)
|
||||
else
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (src.gender == FEMALE)
|
||||
t_him = "her"
|
||||
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.w_uniform.add_fingerprint(M)
|
||||
src.sleeping = max(0,src.sleeping-5)
|
||||
if(!src.sleeping_willingly)
|
||||
src.sleeping = 0
|
||||
src.resting = 0
|
||||
AdjustParalysis(-3)
|
||||
AdjustStunned(-3)
|
||||
AdjustWeakened(-3)
|
||||
playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
|
||||
M.visible_message( \
|
||||
"\blue [M] shakes [src] trying to wake [t_him] up!", \
|
||||
"\blue You shake [src] trying to wake [t_him] up!", \
|
||||
)
|
||||
|
||||
/mob/living/carbon/proc/eyecheck()
|
||||
return 0
|
||||
|
||||
@@ -142,15 +142,40 @@
|
||||
visible_message("\red <B>[M] has pushed [src]!</B>")
|
||||
return
|
||||
|
||||
var/talked = 0 // BubbleWrap
|
||||
|
||||
if(randn <= 60)
|
||||
drop_item()
|
||||
//BubbleWrap: Disarming breaks a pull
|
||||
if(pulling)
|
||||
visible_message("\red <b>[M] has broken [src]'s grip on [pulling]!</B>")
|
||||
talked = 1
|
||||
pulling = null
|
||||
|
||||
//BubbleWrap: Disarming also breaks a grab - this will also stop someone being choked, won't it?
|
||||
if(istype(l_hand, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/lgrab = l_hand
|
||||
if(lgrab.affecting)
|
||||
visible_message("\red <b>[M] has broken [src]'s grip on [lgrab.affecting]!</B>")
|
||||
talked = 1
|
||||
spawn(1)
|
||||
del(lgrab)
|
||||
if(istype(r_hand, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/rgrab = r_hand
|
||||
if(rgrab.affecting)
|
||||
visible_message("\red <b>[M] has broken [src]'s grip on [rgrab.affecting]!</B>")
|
||||
talked = 1
|
||||
spawn(1)
|
||||
del(rgrab)
|
||||
//End BubbleWrap
|
||||
|
||||
if(!talked) //BubbleWrap
|
||||
drop_item()
|
||||
visible_message("\red <B>[M] has disarmed [src]!</B>")
|
||||
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
|
||||
visible_message("\red <B>[M] has disarmed [src]!</B>")
|
||||
return
|
||||
|
||||
|
||||
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("\red <B>[M] attempted to disarm [src]!</B>")
|
||||
update_clothing()
|
||||
return
|
||||
|
||||
|
||||
return
|
||||
@@ -69,7 +69,7 @@
|
||||
src.modules += new /obj/item/weapon/reagent_containers/pill/dexalin(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/pill/antitox(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/pill/kelotane(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/pill/bicardine(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/pill/bicaridine(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
/obj/item/weapon/reagent_containers/pill/dexalin,
|
||||
/obj/item/weapon/reagent_containers/pill/antitox,
|
||||
/obj/item/weapon/reagent_containers/pill/kelotane,
|
||||
/obj/item/weapon/reagent_containers/pill/bicardine
|
||||
/obj/item/weapon/reagent_containers/pill/bicaridine
|
||||
)
|
||||
for (var/T in what)
|
||||
if (!(locate(T) in src.modules))
|
||||
|
||||
@@ -440,6 +440,27 @@
|
||||
else
|
||||
droplimb(1)
|
||||
|
||||
proc/getDisplayName()
|
||||
switch(src.name)
|
||||
if("l_leg")
|
||||
return "left leg"
|
||||
if("r_leg")
|
||||
return "right leg"
|
||||
if("l_arm")
|
||||
return "left arm"
|
||||
if("r_arm")
|
||||
return "right arm"
|
||||
if("l_foot")
|
||||
return "left foot"
|
||||
if("r_foot")
|
||||
return "right foot"
|
||||
if("l_hand")
|
||||
return "left hand"
|
||||
if("r_hand")
|
||||
return "right hand"
|
||||
else
|
||||
return src.name
|
||||
|
||||
/datum/organ/wound
|
||||
name = "wound"
|
||||
var/wound_type = 0 //0 = cut, 1 = bruise, 2 = burn
|
||||
@@ -564,6 +585,8 @@
|
||||
parent.owner.updatehealth()
|
||||
|
||||
|
||||
|
||||
|
||||
/****************************************************
|
||||
INTERNAL ORGANS
|
||||
****************************************************/
|
||||
|
||||
@@ -367,6 +367,13 @@
|
||||
now_pushing = null
|
||||
return
|
||||
return
|
||||
//PC stuff-Sieve
|
||||
|
||||
/mob/living/simple_animal/corgi/proc/mind_initialize(mob/G)
|
||||
mind = new
|
||||
mind.current = src
|
||||
mind.assigned_role = "Corgi"
|
||||
mind.key = G.key
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meat/corgi
|
||||
name = "Corgi meat"
|
||||
|
||||
@@ -47,7 +47,9 @@
|
||||
var/attacktext = "attacks"
|
||||
var/attack_sound = null
|
||||
var/friendly = "nuzzles" //If the mob does no damage with it's attack
|
||||
var/wall_smash = 0 //if they can smash walls
|
||||
|
||||
var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster
|
||||
/mob/living/simple_animal/New()
|
||||
..()
|
||||
verbs -= /mob/verb/observe
|
||||
@@ -286,4 +288,10 @@
|
||||
usr << "\red This weapon is ineffective, it does no damage."
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if ((M.client && !( M.blinded )))
|
||||
M.show_message("\red [user] gently taps [src] with the [O]. ")
|
||||
M.show_message("\red [user] gently taps [src] with the [O]. ")
|
||||
/mob/living/simple_animal/movement_delay()
|
||||
var/tally = 0 //Incase I need to add stuff other than "speed" later
|
||||
|
||||
tally = speed
|
||||
|
||||
return tally
|
||||
@@ -20,6 +20,7 @@
|
||||
min_oxy = 0
|
||||
max_co2 = 0
|
||||
max_tox = 0
|
||||
speed = -1
|
||||
|
||||
|
||||
Life()
|
||||
|
||||
@@ -308,6 +308,30 @@
|
||||
|
||||
new_metroid.a_intent = "hurt"
|
||||
new_metroid << "<B>You are now a baby Metroid.</B>"
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/corgize()
|
||||
if (monkeyizing)
|
||||
return
|
||||
for(var/obj/item/W in src)
|
||||
drop_from_slot(W)
|
||||
update_clothing()
|
||||
monkeyizing = 1
|
||||
canmove = 0
|
||||
icon = null
|
||||
invisibility = 101
|
||||
for(var/t in organs)
|
||||
del(t)
|
||||
|
||||
var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
|
||||
|
||||
new_corgi.mind_initialize(src)
|
||||
new_corgi.key = key
|
||||
|
||||
new_corgi.a_intent = "hurt"
|
||||
new_corgi << "<B>You are now a Corgi!.</B>"
|
||||
spawn(0)//To prevent the proc from returning null.
|
||||
del(src)
|
||||
return
|
||||
@@ -690,6 +690,7 @@ datum
|
||||
materials = list("$glass" = 2000, "acid" = 20)
|
||||
build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting"
|
||||
|
||||
|
||||
honker_main
|
||||
name = "Circuit Design (\"H.O.N.K\" Central Control module)"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
|
||||
@@ -849,6 +850,7 @@ datum
|
||||
req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3)
|
||||
build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear"
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
//////////Disk Construction Disks///////
|
||||
////////////////////////////////////////
|
||||
@@ -1014,6 +1016,8 @@ datum
|
||||
reliability_base = 75
|
||||
build_path = "/obj/item/weapon/stock_parts/matter_bin/super"
|
||||
|
||||
|
||||
|
||||
subspace_ansible
|
||||
name = "Subspace Ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
@@ -1113,7 +1117,7 @@ datum
|
||||
name = "Hyper-Capacity Power Cell"
|
||||
desc = "A power cell that holds 30000 units of energy"
|
||||
id = "hyper_cell"
|
||||
req_tech = list("powerstorage" = 6, "materials" = 4)
|
||||
req_tech = list("powerstorage" = 5, "materials" = 4)
|
||||
reliability_base = 85
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70)
|
||||
|
||||
|
Before Width: | Height: | Size: 238 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 336 KiB |