moving all the git stuff over to this so people who don't want to spend 8 years figuring out the bass ackward git system can actually run our server code

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2983 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
quartz235@gmail.com
2012-01-25 05:05:55 +00:00
parent cbe487dbd5
commit b3f7865754
82 changed files with 21831 additions and 21392 deletions

View File

@@ -1,7 +1,7 @@
tgstation13 v1.0 - 6 October 2010
Website: http://nanotrasen.com
Code: http://code.google.com/p/tgstation13
Code: https://github.com/tgstation/-tg-station
IRC: irc://irc.rizon.net/tgstation13
================================================================================

View File

@@ -547,3 +547,18 @@ obj/item/clothing/suit/justice
icon_state = "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"

View File

@@ -1080,7 +1080,7 @@
/obj/item/weapon/cell/super
name = "super-capacity power cell"
origin_tech = "powerstorage=3"
origin_tech = "powerstorage=5"
maxcharge = 20000
g_amt = 70

View File

@@ -204,7 +204,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()

View File

@@ -11,6 +11,7 @@
volume = 750
stationary
name = "Stationary Air Scrubber"
icon_state = "scrubber:0"
anchored = 1
volume = 30000

View File

@@ -560,6 +560,10 @@
process_bot()
sleep(2)
process_bot()
sleep(2)
process_bot()
sleep(2)
process_bot()
if(2)
process_bot()
spawn(4)

View File

@@ -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()

View File

@@ -22,10 +22,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)

View File

@@ -126,7 +126,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,

View File

@@ -5,6 +5,9 @@
They receive their message from a server after the message has been logged.
*/
var
list/recentmessages = list() // global list of recent messages broadcasted : used to circumvent massive radio spam
/obj/machinery/telecomms/broadcaster
name = "Subspace Broadcaster"
@@ -19,11 +22,17 @@
heatgen = 60
delay = 7
circuitboard = "/obj/item/weapon/circuitboard/telecomms/broadcaster"
receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from)
if(signal.data["message"])
// Kind of lame way to prevent MASSIVE RADIO SPAM but it works
if("[signal.data["message"]]:[signal.data["realname"]]" in recentmessages)
return
recentmessages.Add( "[signal.data["message"]]:[signal.data["realname"]]" )
signal.data["done"] = 1 // mark the signal as being broadcasted
// Search for the original signal and mark it as done as well
@@ -44,6 +53,9 @@
/* --- Do a snazzy animation! --- */
flick("broadcaster_send", src)
spawn(1)
recentmessages = list()
/*
Basically just an empty shell for receiving and broadcasting radio messages. Not
@@ -68,38 +80,36 @@
if(!on) // has to be on to receive messages
return
if(signal.transmission_method == 2)
if(is_freq_listening(signal)) // detect subspace signals
if(is_freq_listening(signal)) // detect subspace signals
signal.data["done"] = 1 // mark the signal as being broadcasted
signal.data["compression"] = 0
signal.data["done"] = 1 // mark the signal as being broadcasted
signal.data["compression"] = 0
// Search for the original signal and mark it as done as well
var/datum/signal/original = signal.data["original"]
if(original)
original.data["done"] = 1
// Search for the original signal and mark it as done as well
var/datum/signal/original = signal.data["original"]
if(original)
original.data["done"] = 1
if(signal.data["slow"] > 0)
sleep(signal.data["slow"]) // simulate the network lag if necessary
if(signal.data["slow"] > 0)
sleep(signal.data["slow"]) // simulate the network lag if necessary
/* ###### Broadcast a message using signal.data ###### */
/* ###### Broadcast a message using signal.data ###### */
var/datum/radio_frequency/connection = signal.data["connection"]
var/datum/radio_frequency/connection = signal.data["connection"]
if(connection.frequency == SYND_FREQ) // if syndicate broadcast, just
if(connection.frequency == SYND_FREQ) // if syndicate broadcast, just
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"])
else
if(intercept)
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"],, signal.data["compression"])
else
if(intercept)
Broadcast_Message(signal.data["connection"], signal.data["mob"],
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], 3, signal.data["compression"])
signal.data["vmask"], signal.data["vmessage"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], signal.data["vname"], 3, signal.data["compression"])

View File

@@ -77,6 +77,9 @@
newpath = text2path(I)
var/obj/item/s = new newpath
s.loc = user.loc
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/A = P
A.amount = 1
// Drop a circuit board too
C.loc = user.loc
@@ -113,13 +116,16 @@
dat += "<br>Network: <a href='?src=\ref[src];input=network'>[network]</a>"
dat += "<br>Prefabrication: [autolinkers.len ? "TRUE" : "FALSE"]"
dat += "<br>Linked Network Entities: <ol>"
var/i = 0
for(var/obj/machinery/telecomms/T in links)
dat += "<li>\ref[T] [T.name] ([T.id])</li>"
i++
dat += "<li>\ref[T] [T.name] ([T.id]) <a href='?src=\ref[src];unlink=[i]'>\[X\]</a></li>"
dat += "</ol>"
dat += "<br>Filtering Frequencies: "
var/i = 0
i = 0
if(length(freq_listening))
for(var/x in freq_listening)
i++
@@ -197,6 +203,16 @@
temp = "<font color = #666633>-% Removed frequency filter [x] %-</font color>"
freq_listening.Remove(x)
if(href_list["unlink"])
var/obj/machinery/telecomms/T = links[text2num(href_list["unlink"])]
temp = "<font color = #666633>-% Removed \ref[T] [T.name] from linked entities. %-</font color>"
// Remove link entries from both T and src.
if(src in T.links)
T.links.Remove(src)
links.Remove(T)
if(href_list["link"])
if(P.buffer)

View File

@@ -105,6 +105,14 @@
return 1
return 0
/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
name = "Diamond Drill"
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
icon_state = "mecha_diamond_drill"
origin_tech = "materials=4;engineering=3"
construction_cost = list("metal"=10000,"diamond"=6500)
equip_cooldown = 20
force = 15
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher
name = "Extinguisher"
@@ -1543,3 +1551,69 @@
return 1
*/
//This is pretty much just for the death-ripley so that it is harmless
/obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
name = "KILL CLAMP"
icon_state = "mecha_clamp"
equip_cooldown = 15
energy_drain = 0
var/dam_force = 0
var/obj/mecha/working/ripley/cargo_holder
can_attach(obj/mecha/working/ripley/M as obj)
if(..())
if(istype(M))
return 1
return 0
attach(obj/mecha/M as obj)
..()
cargo_holder = M
return
action(atom/target)
if(!action_checks(target)) return
if(!cargo_holder) return
if(istype(target,/obj))
var/obj/O = target
if(!O.anchored)
if(cargo_holder.cargo.len < cargo_holder.cargo_capacity)
chassis.occupant_message("You lift [target] and start to load it into cargo compartment.")
chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.")
set_ready_state(0)
chassis.use_power(energy_drain)
O.anchored = 1
var/T = chassis.loc
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
cargo_holder.cargo += O
O.loc = chassis
O.anchored = 0
chassis.occupant_message("<font color='blue'>[target] succesfully loaded.</font>")
chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
chassis.occupant_message("<font color='red'>You must hold still while handling objects.</font>")
O.anchored = initial(O.anchored)
else
chassis.occupant_message("<font color='red'>Not enough room in cargo compartment.</font>")
else
chassis.occupant_message("<font color='red'>[target] is firmly secured.</font>")
else if(istype(target,/mob/living))
var/mob/living/M = target
if(M.stat>1) return
if(chassis.occupant.a_intent == "hurt")
chassis.occupant_message("\red You obliterate [target] with [src.name], leaving blood and guts everywhere.")
chassis.visible_message("\red [chassis] destroys [target] in an unholy fury.")
if(chassis.occupant.a_intent == "disarm")
chassis.occupant_message("\red You tear [target]'s limbs off with [src.name].")
chassis.visible_message("\red [chassis] rips [target]'s arms off.")
else
step_away(M,chassis)
chassis.occupant_message("You smash into [target], sending them flying.")
chassis.visible_message("[chassis] tosses [target] like a piece of paper.")
set_ready_state(0)
chassis.use_power(energy_drain)
do_after_cooldown()
return 1

View File

@@ -94,6 +94,7 @@
/obj/item/mecha_parts/part/honker_right_leg
),
"Exosuit Equipment"=list(
/obj/item/mecha_parts/chassis/firefighter,
/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,
/obj/item/mecha_parts/mecha_equipment/tool/drill,
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,
@@ -111,9 +112,17 @@
"Misc"=list(/obj/item/mecha_tracking)
)
New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/mechfab(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
RefreshParts()
for(var/part_set in part_sets)
convert_part_set(part_set)
files = new /datum/research(src) //Setup the research data holder.

View File

@@ -559,10 +559,29 @@
src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1)
return
//TODO
/obj/mecha/blob_act()
/*Will fix later -Sieve
/obj/mecha/attack_blob(mob/user as mob)
src.log_message("Attack by blob. Attacker - [user].",1)
if(!prob(src.deflect_chance))
src.take_damage(6)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
playsound(src.loc, 'blobattack.ogg', 50, 1, -1)
user << "\red You smash at the armored suit!"
for (var/mob/V in viewers(src))
if(V.client && !(V.blinded))
V.show_message("\red The [user] smashes against [src.name]'s armor!", 1)
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'blobattack.ogg', 50, 1, -1)
user << "\green Your attack had no effect!"
src.occupant_message("\blue The [user]'s attack is stopped by the armor.")
for (var/mob/V in viewers(src))
if(V.client && !(V.blinded))
V.show_message("\blue The [user] rebounds off the [src.name] armor!", 1)
return
*/
//TODO
/obj/mecha/meteorhit()
return ex_act(rand(1,3))//should do for now

View File

@@ -12,6 +12,9 @@
else if(istype(used_atom, /obj/item/weapon/wrench))
playsound(holder, 'Ratchet.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/screwdriver))
playsound(holder, 'Screwdriver.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/wirecutters))
playsound(holder, 'Wirecutter.ogg', 50, 1)
@@ -22,6 +25,7 @@
return 0
else
C.use(4)
playsound(holder, 'Deconstruct.ogg', 50, 1)
else if(istype(used_atom, /obj/item/stack))
var/obj/item/stack/S = used_atom
if(S.amount < 5)
@@ -41,6 +45,9 @@
else if(istype(used_atom, /obj/item/weapon/wrench))
playsound(holder, 'Ratchet.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/screwdriver))
playsound(holder, 'Screwdriver.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/wirecutters))
playsound(holder, 'Wirecutter.ogg', 50, 1)
@@ -51,6 +58,7 @@
return 0
else
C.use(4)
playsound(holder, 'Deconstruct.ogg', 50, 1)
else if(istype(used_atom, /obj/item/stack))
var/obj/item/stack/S = used_atom
if(S.amount < 5)
@@ -477,11 +485,12 @@
/datum/construction/mecha/firefighter_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/firefighter_torso),//1
list("key"=/obj/item/mecha_parts/part/firefighter_left_arm),//2
list("key"=/obj/item/mecha_parts/part/firefighter_right_arm),//3
list("key"=/obj/item/mecha_parts/part/firefighter_left_leg),//4
list("key"=/obj/item/mecha_parts/part/firefighter_right_leg)//5
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
list("key"=/obj/item/mecha_parts/part/ripley_right_arm),//3
list("key"=/obj/item/mecha_parts/part/ripley_left_leg),//4
list("key"=/obj/item/mecha_parts/part/ripley_right_leg),//5
list("key"=/obj/item/clothing/suit/fire)//6
)
custom_action(step, atom/used_atom, mob/user)
@@ -495,7 +504,7 @@
spawn_result()
var/obj/item/mecha_parts/chassis/const_holder = holder
const_holder.construct = new /datum/construction/mecha/firefighter(const_holder)
const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
const_holder.density = 1
spawn()
del src
@@ -503,64 +512,165 @@
return
/datum/construction/mecha/firefighter
result = "/obj/mecha/working/firefighter"
steps = list(list("key"=/obj/item/weapon/weldingtool),//1
list("key"=/obj/item/weapon/wrench),//2
list("key"=/obj/item/stack/sheet/plasteel),//3
list("key"=/obj/item/weapon/weldingtool),//4
list("key"=/obj/item/weapon/wrench),//5
list("key"=/obj/item/stack/sheet/metal),//6
list("key"=/obj/item/weapon/screwdriver),//7
list("key"=/obj/item/weapon/circuitboard/mecha/firefighter/peripherals),//8
list("key"=/obj/item/weapon/screwdriver),//9
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/main),//10
list("key"=/obj/item/weapon/wirecutters),//11
list("key"=/obj/item/weapon/cable_coil),//12
list("key"=/obj/item/weapon/screwdriver),//13
list("key"=/obj/item/weapon/wrench)//14
/datum/construction/reversible/mecha/firefighter
result = "/obj/mecha/working/ripley/firefighter"
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
"backkey"=/obj/item/weapon/wrench,
"desc"="External armor is wrenched."),
//2
list("key"=/obj/item/weapon/wrench,
"backkey"=/obj/item/weapon/crowbar,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/stack/sheet/plasteel,
"backkey"=/obj/item/weapon/crowbar,
"desc"="External armor is being installed."),
//4
list("key"=/obj/item/stack/sheet/plasteel,
"backkey"=/obj/item/weapon/weldingtool,
"desc"="Internal armor is welded."),
//5
list("key"=/obj/item/weapon/weldingtool,
"backkey"=/obj/item/weapon/wrench,
"desc"="Internal armor is wrenched"),
//6
list("key"=/obj/item/weapon/wrench,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Internal armor is installed"),
//7
list("key"=/obj/item/stack/sheet/plasteel,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="Peripherals control module is secured"),
//8
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Peripherals control module is installed"),
//9
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/peripherals,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="Central control module is secured"),
//10
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/crowbar,
"desc"="Central control module is installed"),
//11
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/main,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is adjusted"),
//12
list("key"=/obj/item/weapon/wirecutters,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//13
list("key"=/obj/item/weapon/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//14
list("key"=/obj/item/weapon/screwdriver,
"backkey"=/obj/item/weapon/wrench,
"desc"="The hydraulic systems are connected."),
//15
list("key"=/obj/item/weapon/wrench,
"desc"="The hydraulic systems are disconnected.")
)
action(atom/used_atom,mob/user as mob)
return check_step(used_atom,user)
custom_action(step, atom/used_atom, mob/user)
custom_action(index, diff, atom/used_atom, mob/user)
if(!..())
return 0
//TODO: better messages.
switch(step)
if(14)
switch(index)
if(15)
user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
if(14)
if(diff==FORWARD)
user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
else
user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
if(13)
user.visible_message("[user] adjusts [holder] hydraulic systems.", "You adjust [holder] hydraulic systems.")
if(diff==FORWARD)
user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
else
user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
if(12)
user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
if(diff==FORWARD)
user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
coil.amount = 4
if(11)
user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
if(diff==FORWARD)
user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
del used_atom
else
user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
if(10)
user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
del used_atom
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
else
user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder))
if(9)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
if(diff==FORWARD)
user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
del used_atom
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
if(8)
user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
del used_atom
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
else
user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder))
if(7)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
if(diff==FORWARD)
user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
if(6)
user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
if(diff==FORWARD)
user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
else
user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
if(5)
user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
if(diff==FORWARD)
user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
if(4)
user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
if(diff==FORWARD)
user.visible_message("[user] starts to install the external armor layer to [holder].", "You start to install the external armor layer to [holder].")
else
user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
if(3)
user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
if(diff==FORWARD)
user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
else
user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
if(2)
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
if(diff==FORWARD)
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
else
user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
if(1)
user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
if(diff==FORWARD)
user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
return 1

View File

@@ -205,12 +205,12 @@
////////// Firefighter
/obj/item/mecha_parts/chassis/firefighter
name = "Ripley-on-Fire Chassis"
name = "Firefighter Chassis"
New()
..()
construct = new /datum/construction/mecha/firefighter_chassis(src)
/*
/obj/item/mecha_parts/part/firefighter_torso
name="Ripley-on-Fire Torso"
icon_state = "ripley_harness"
@@ -230,7 +230,7 @@
/obj/item/mecha_parts/part/firefighter_right_leg
name="Ripley-on-Fire Right Leg"
icon_state = "ripley_r_leg"
*/
////////// HONK
@@ -452,10 +452,6 @@
name = "Circuit board (Durand Central Control module)"
icon_state = "mainboard"
firefighter/peripherals
name = "Circuit board (Ripley-on-Fire Peripherals Control module)"
icon_state = "mcontroller"
honker
origin_tech = "programming=4"

View File

@@ -126,6 +126,29 @@
parts -= part
return
/obj/effect/decal/mecha_wreckage/ripley
name = "Firefighter wreckage"
icon_state = "firefighter-broken"
New()
..()
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
/obj/item/mecha_parts/part/ripley_left_arm,
/obj/item/mecha_parts/part/ripley_right_arm,
/obj/item/mecha_parts/part/ripley_left_leg,
/obj/item/mecha_parts/part/ripley_right_leg,
/obj/item/clothing/suit/fire)
for(var/i=0;i<2;i++)
if(!isemptylist(parts) && prob(40))
var/part = pick(parts)
welder_salvage += part
parts -= part
return
/obj/effect/decal/mecha_wreckage/deathripley
name = "Death-Ripley wreckage"
icon_state = "deathripley-broken"
/obj/effect/decal/mecha_wreckage/honker
name = "Honker wreckage"
icon_state = "honker-broken"

View File

@@ -1,4 +1,4 @@
/obj/mecha/working/firefighter
/*/obj/mecha/working/firefighter
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
name = "Ripley-on-Fire"
icon_state = "ripley"
@@ -9,17 +9,17 @@
wreckage = /obj/effect/decal/mecha_wreckage/ripley
infra_luminosity = 5
/*
/obj/mecha/working/firefighter/New()
..()
// tools += new /datum/mecha_tool/uni_interface(src)
tools += new /datum/mecha_tool/extinguisher(src)
tools += new /datum/mecha_tool/drill(src)
/*
for(var/g_type in typesof(/datum/mecha_tool/gimmick))
if(g_type!=/datum/mecha_tool/gimmick)
tools += new g_type(src)
*/
selected_tool = tools[1]
return
*/

View File

@@ -15,6 +15,30 @@
return
*/
/obj/mecha/working/ripley/firefighter
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
name = "APLU \"Firefighter\""
icon_state = "firefighter"
max_temperature = 2500
health = 250
lights_power = 8
list/damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
/obj/mecha/working/ripley/deathripley
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
name = "DEATH-RIPLEY"
icon_state = "deathripley"
step_in = 2
opacity=0
lights_power = 60
step_energy_drain = 0
/obj/mecha/working/ripley/deathripley/New()
..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/safety_clamp
ME.attach(src)
return
/obj/mecha/working/ripley/Exit(atom/movable/O)
if(O in cargo)
return 0

View File

@@ -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

View File

@@ -0,0 +1,20 @@
/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)
return

View File

@@ -745,7 +745,7 @@
if(istype(C, /mob/living/carbon/human))
var/mob/living/carbon/human/H = C
var/list/damaged = H.get_damaged_organs(1,1)
user.show_message("\blue Localized Damage, Brute-Burn:",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)

View File

@@ -208,7 +208,7 @@ MASS SPECTROMETER
if(mode == 1 && 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)
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)

View File

@@ -307,6 +307,14 @@
<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>

View File

@@ -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

View File

@@ -64,6 +64,9 @@ var/ordernum=0
if (prob(5))
del(src)
/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates
var/blocks_air = 1
/area/supplyshuttle
name = "Supply Shuttle"
icon_state = "supply"

View File

@@ -480,6 +480,20 @@
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"])
@@ -1198,6 +1212,13 @@
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")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","P")
@@ -1863,6 +1884,10 @@
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))

View File

@@ -80,6 +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
@@ -199,6 +200,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

View File

@@ -49,6 +49,25 @@
else
alert("Admin jumping disabled")
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
set category = "Admin"
set name = "Jump to Coordinate"
if (!authenticated || !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
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
else
alert("Admin jumping disabled")
/client/proc/jumptokey()
set category = "Admin"
set name = "Jump to Key"

View File

@@ -365,3 +365,10 @@
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

View File

@@ -299,3 +299,27 @@
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

View File

@@ -788,6 +788,14 @@ datum
req_tech = list("materials" = 3, "biotech"=4, "magnets"=4, "programming"=3)
build_path = "/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun"
mech_diamond_drill
name = "Exosuit Module Design (Diamond Mining Drill)"
desc = "An upgraded version of the standard drill"
id = "mech_diamond_drill"
build_type = MECHFAB
req_tech = list("materials" = 4, "engineering" = 3)
build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill"
////////////////////////////////////////
//////////Disk Construction Disks///////
@@ -1055,7 +1063,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 = 70
build_type = PROTOLATHE
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because it is too large Load Diff

BIN
sound/machines/copier.ogg Normal file

Binary file not shown.

View File

@@ -599,6 +599,7 @@
#include "code\game\objects\closets\thunderdome.dm"
#include "code\game\objects\closets\wardrobe.dm"
#include "code\game\objects\closets\secure\bar.dm"
#include "code\game\objects\closets\secure\cargo.dm"
#include "code\game\objects\closets\secure\engineering.dm"
#include "code\game\objects\closets\secure\medical.dm"
#include "code\game\objects\closets\secure\personal.dm"