FUCKING REVERSIONS

This commit is contained in:
D3athrow
2015-05-11 20:02:13 -05:00
parent 7730d2f1d2
commit 5796813948
48 changed files with 722 additions and 639 deletions

View File

@@ -25,6 +25,8 @@
var/frequency = 0 var/frequency = 0
var/id_tag = null var/id_tag = null
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
machine_flags = MULTITOOL_MENU
/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume /obj/machinery/atmospherics/binary/dp_vent_pump/high_volume
name = "Large Dual Port Air Vent" name = "Large Dual Port Air Vent"
@@ -218,9 +220,6 @@
update_icon() update_icon()
/obj/machinery/atmospherics/binary/dp_vent_pump/attackby(var/obj/item/W as obj, var/mob/user as mob) /obj/machinery/atmospherics/binary/dp_vent_pump/attackby(var/obj/item/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
interact(user)
return 1
return ..() return ..()
/obj/machinery/atmospherics/binary/dp_vent_pump/interact(var/mob/user) /obj/machinery/atmospherics/binary/dp_vent_pump/interact(var/mob/user)

View File

@@ -116,6 +116,8 @@
var/frequency = 0 var/frequency = 0
var/id_tag = null var/id_tag = null
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
machine_flags = MULTITOOL_MENU
/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user as mob) /obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user as mob)
src.add_hiddenprint(user) src.add_hiddenprint(user)
@@ -214,9 +216,6 @@
// Just for digital valves. // Just for digital valves.
/obj/machinery/atmospherics/binary/valve/digital/attackby(var/obj/item/W as obj, var/mob/user as mob) /obj/machinery/atmospherics/binary/valve/digital/attackby(var/obj/item/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if(src.frequency && istype(W, /obj/item/weapon/wrench)) if(src.frequency && istype(W, /obj/item/weapon/wrench))
user << "<span class='warning'>You cannot unwrench this [src], it's digitally connected to another device.</span>" user << "<span class='warning'>You cannot unwrench this [src], it's digitally connected to another device.</span>"
return 1 return 1

View File

@@ -17,6 +17,8 @@
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
level = 1 level = 1
machine_flags = MULTITOOL_MENU
/obj/machinery/atmospherics/unary/outlet_injector/update_icon() /obj/machinery/atmospherics/unary/outlet_injector/update_icon()
if(node) if(node)
@@ -158,9 +160,6 @@
"} "}
/obj/machinery/atmospherics/unary/outlet_injector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /obj/machinery/atmospherics/unary/outlet_injector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
interact(user)
return 1
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()
if (!(stat & NOPOWER) && on) if (!(stat & NOPOWER) && on)

View File

@@ -29,18 +29,20 @@
var/radio_filter_out var/radio_filter_out
var/radio_filter_in var/radio_filter_in
machine_flags = MULTITOOL_MENU
on /obj/machinery/atmospherics/unary/vent_pump/on
on = 1 on = 1
icon_state = "out" icon_state = "out"
siphon /obj/machinery/atmospherics/unary/vent_pump/siphon
pump_direction = 0 pump_direction = 0
icon_state = "off" icon_state = "off"
on /obj/machinery/atmospherics/unary/vent_pump/siphon/on
on = 1 on = 1
icon_state = "in" icon_state = "in"
/obj/machinery/atmospherics/unary/vent_pump/New() /obj/machinery/atmospherics/unary/vent_pump/New()
..() ..()
@@ -337,9 +339,6 @@
else else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>" user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return 1 return 1
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()
if (!(stat & NOPOWER) && on) if (!(stat & NOPOWER) && on)

View File

@@ -27,6 +27,8 @@
var/area_uid var/area_uid
var/radio_filter_out var/radio_filter_out
var/radio_filter_in var/radio_filter_in
machine_flags = MULTITOOL_MENU
/obj/machinery/atmospherics/unary/vent_scrubber/New() /obj/machinery/atmospherics/unary/vent_scrubber/New()
..() ..()
@@ -289,9 +291,6 @@
return !welded return !welded
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if(istype(W, /obj/item/weapon/weldingtool)) if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user)) if (WT.remove_fuel(0,user))

View File

@@ -9,7 +9,9 @@
usr << "<span class='warning'>Missing equipment or weapons.</span>" usr << "<span class='warning'>Missing equipment or weapons.</span>"
my_atom.verbs -= /obj/item/device/spacepod_equipment/weaponry/proc/fire_weapon_system my_atom.verbs -= /obj/item/device/spacepod_equipment/weaponry/proc/fire_weapon_system
return return
my_atom.battery.use(shot_cost) if(!my_atom.battery.use(shot_cost))
usr << "<span class='warning'>\The [my_atom]'s cell is too low on charge!</span>"
return
var/olddir var/olddir
dir = my_atom.dir dir = my_atom.dir
for(var/i = 0; i < shots_per; i++) for(var/i = 0; i < shots_per; i++)
@@ -90,8 +92,9 @@
name = "\improper burst taser system" name = "\improper burst taser system"
desc = "A weak taser system for space pods, this one fires 3 at a time." desc = "A weak taser system for space pods, this one fires 3 at a time."
icon_state = "pod_b_taser" icon_state = "pod_b_taser"
shot_cost = 20 shot_cost = 35
shots_per = 3 shots_per = 3
fire_delay = 20
verb_name = "Fire Burst Taser System" verb_name = "Fire Burst Taser System"
verb_desc = "Fire ze tasers!" verb_desc = "Fire ze tasers!"
@@ -100,9 +103,9 @@
desc = "A weak laser system for space pods, fires concentrated bursts of energy" desc = "A weak laser system for space pods, fires concentrated bursts of energy"
icon_state = "pod_w_laser" icon_state = "pod_w_laser"
projectile_type = /obj/item/projectile/beam projectile_type = /obj/item/projectile/beam
shot_cost = 15 shot_cost = 150
fire_sound = 'sound/weapons/Laser.ogg' fire_sound = 'sound/weapons/Laser.ogg'
fire_delay = 25 fire_delay = 15
verb_name = "Fire Laser System" verb_name = "Fire Laser System"
verb_desc = "Fire ze lasers!" verb_desc = "Fire ze lasers!"

View File

@@ -86,12 +86,12 @@
spawn(0) spawn(0)
if(occupant) if(occupant)
occupant << "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>" occupant << "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>"
for(var/i = 10, i >= 0; --i) for(var/i = 10, i >= 0; --i)
if(occupant) if(occupant)
occupant << "<span class='warning'>[i]</span>" occupant << "<span class='warning'>[i]</span>"
if(i == 0) if(i == 0)
explosion(loc, 2, 4, 8) explosion(loc, 2, 4, 8)
sleep(10) sleep(10)
update_icons() update_icons()

View File

@@ -56,7 +56,7 @@
M << "<span class='warning'>[deactivation_message]</span>" M << "<span class='warning'>[deactivation_message]</span>"
else else
testing("[name] has no deactivation message.") testing("[name] has no deactivation message.")
..() return ..()
/datum/dna/gene/disability/hallucinate /datum/dna/gene/disability/hallucinate
name="Hallucinate" name="Hallucinate"

View File

@@ -164,7 +164,7 @@
var/icon/flat = getFlatIcon(Mind.current, SOUTH, 1, 1) var/icon/flat = getFlatIcon(Mind.current, SOUTH, 1, 1)
end_icons += flat end_icons += flat
tempstate = end_icons.len tempstate = end_icons.len
text += {"<br><img src="logo_[tempstate].png"> [Mind.key] was [Mind.name] ("} text += {"<br><img src="logo_[tempstate].png"> <b>[Mind.key]</b> was <b>[Mind.name]</b> ("}
if(Mind.current.stat == DEAD) if(Mind.current.stat == DEAD)
text += "died" text += "died"
flat.Turn(90) flat.Turn(90)
@@ -177,7 +177,7 @@
var/icon/sprotch = icon('icons/effects/blood.dmi', "floor1-old") var/icon/sprotch = icon('icons/effects/blood.dmi', "floor1-old")
end_icons += sprotch end_icons += sprotch
tempstate = end_icons.len tempstate = end_icons.len
text += {"<br><img src="logo_[tempstate].png"> [Mind.key] was [Mind.name] ("} text += {"<br><img src="logo_[tempstate].png"> <b>[Mind.key]</b> was <b>[Mind.name]</b> ("}
text += "body destroyed" text += "body destroyed"
text += ")" text += ")"

View File

@@ -138,6 +138,8 @@ obj/machinery/airlock_sensor
ghost_read = 0 // Deactivate ghost touching. ghost_read = 0 // Deactivate ghost touching.
ghost_write = 0 ghost_write = 0
machine_flags = MULTITOOL_MENU
obj/machinery/airlock_sensor/update_icon() obj/machinery/airlock_sensor/update_icon()
@@ -248,8 +250,9 @@ obj/machinery/airlock_sensor/Topic(href,href_list)
obj/machinery/airlock_sensor/attackby(var/obj/item/W, var/mob/user) obj/machinery/airlock_sensor/attackby(var/obj/item/W, var/mob/user)
if(istype(W,/obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return .
if(istype(W,/obj/item/weapon/screwdriver)) if(istype(W,/obj/item/weapon/screwdriver))
user << "You begin to pry \the [src] off the wall..." user << "You begin to pry \the [src] off the wall..."
if(do_after(user, 50)) if(do_after(user, 50))
@@ -275,6 +278,7 @@ obj/machinery/access_button
ghost_read = 0 // Deactivate ghost touching. ghost_read = 0 // Deactivate ghost touching.
ghost_write = 0 ghost_write = 0
machine_flags = MULTITOOL_MENU
/obj/machinery/access_button/New(turf/loc, var/ndir, var/building=0) /obj/machinery/access_button/New(turf/loc, var/ndir, var/building=0)
..() ..()
@@ -318,8 +322,9 @@ obj/machinery/access_button/attack_hand(mob/user)
obj/machinery/access_button/attackby(var/obj/item/W, var/mob/user) obj/machinery/access_button/attackby(var/obj/item/W, var/mob/user)
if (istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu() if(.)
return .
if(istype(W,/obj/item/weapon/screwdriver)) if(istype(W,/obj/item/weapon/screwdriver))
user << "You begin to pry \the [src] off the wall..." user << "You begin to pry \the [src] off the wall..."
if(do_after(user, 50)) if(do_after(user, 50))

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
use_power = 1 use_power = 1
idle_power_usage = 2 idle_power_usage = 2
active_power_usage = 4 active_power_usage = 4
machine_flags = MULTITOOL_MENU
/obj/machinery/meter/New() /obj/machinery/meter/New()
..() ..()
@@ -134,10 +135,6 @@
</ul>"} </ul>"}
/obj/machinery/meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) /obj/machinery/meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if (!istype(W, /obj/item/weapon/wrench)) if (!istype(W, /obj/item/weapon/wrench))
return ..() return ..()

View File

@@ -8,7 +8,7 @@
active_power_usage = 300 active_power_usage = 300
var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassembly var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassembly
var/processing = 0 var/processing = 0
machine_flags = EMAGGABLE | SCREWTOGGLE | WRENCHMOVE | FIXED2WORK machine_flags = EMAGGABLE | SCREWTOGGLE | WRENCHMOVE | FIXED2WORK | MULTITOOL_MENU
/obj/machinery/computer/cultify() /obj/machinery/computer/cultify()
new /obj/structure/cult/tome(loc) new /obj/structure/cult/tome(loc)

View File

@@ -91,7 +91,8 @@
visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!") visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!")
return return
flick("mass_drivers_timing", src) if(icon_state != "old")
flick("mass_drivers_timing", src)
for(var/obj/machinery/door/poddoor/M in poddoors) for(var/obj/machinery/door/poddoor/M in poddoors)
if(M.z != src.z) continue if(M.z != src.z) continue
@@ -191,10 +192,12 @@
else else
times[ident_tag] = maxtimes[ident_tag] times[ident_tag] = maxtimes[ident_tag]
updateDialog() updateDialog()
if(timing)
icon_state = "mass_drivers_timing" if(icon_state != "old")
else if(timing)
icon_state = "mass_drivers" icon_state = "mass_drivers_timing"
else
icon_state = "mass_drivers"
return return
@@ -314,7 +317,8 @@
visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!") visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!")
return return
flick("mass_drivers_timing", src) if(icon_state != "old")
flick("mass_drivers_timing", src)
if(teleporter_dest) if(teleporter_dest)
for(var/obj/structure/deathsquad_tele/D in world) for(var/obj/structure/deathsquad_tele/D in world)

View File

@@ -33,7 +33,7 @@
ghost_read=0 ghost_read=0
ghost_write=0 ghost_write=0
machine_flags = EMAGGABLE machine_flags = EMAGGABLE | MULTITOOL_MENU
/obj/machinery/door_control/attack_ai(mob/user as mob) /obj/machinery/door_control/attack_ai(mob/user as mob)
src.add_hiddenprint(user) src.add_hiddenprint(user)
@@ -134,14 +134,13 @@
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob)
. = ..()
if(.)
return .
if(istype(W, /obj/item/device/detective_scanner)) if(istype(W, /obj/item/device/detective_scanner))
return return
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if(istype(W, /obj/item/weapon/wrench)) if(istype(W, /obj/item/weapon/wrench))
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 30)) if(do_after(user, 30))

View File

@@ -115,9 +115,9 @@
icon = 'icons/obj/doors/vault.dmi' icon = 'icons/obj/doors/vault.dmi'
opacity = 1 opacity = 1
emag_cost = 2 // in MJ emag_cost = 2 // in MJ
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites. assembly_type = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2 explosion_block = 3//that's some high quality plasteel door
/obj/machinery/door/airlock/freezer /obj/machinery/door/airlock/freezer
name = "Freezer Airlock" name = "Freezer Airlock"

View File

@@ -11,6 +11,7 @@
var/build=2 // Build state var/build=2 // Build state
var/boardtype=null // /obj/item/weapon/circuitboard/ecb var/boardtype=null // /obj/item/weapon/circuitboard/ecb
var/obj/item/weapon/circuitboard/_circuitboard var/obj/item/weapon/circuitboard/_circuitboard
machine_flags = MULTITOOL_MENU
/obj/machinery/embedded_controller/New(turf/loc, var/ndir, var/building=0) /obj/machinery/embedded_controller/New(turf/loc, var/ndir, var/building=0)
..() ..()
@@ -30,6 +31,9 @@
src.update_icon() src.update_icon()
/obj/machinery/embedded_controller/attackby(var/obj/item/W as obj, var/mob/user as mob) /obj/machinery/embedded_controller/attackby(var/obj/item/W as obj, var/mob/user as mob)
. = ..()
if(.)
return .
if(type==/obj/machinery/embedded_controller) if(type==/obj/machinery/embedded_controller)
switch(build) switch(build)
if(0) // Empty hull if(0) // Empty hull
@@ -113,11 +117,6 @@
if(build<2) if(build<2)
return ..() return ..()
if(istype(W,/obj/item/device/multitool))
update_multitool_menu(user)
else
..()
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line) /obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
return 0 return 0

View File

@@ -580,6 +580,10 @@ Class Procs:
else else
return -1 return -1
if(ismultitool(O) && machine_flags & MULTITOOL_MENU)
update_multitool_menu(user)
return 1
if(!anchored && machine_flags & FIXED2WORK) if(!anchored && machine_flags & FIXED2WORK)
return user << "<span class='warning'>\The [src] must be anchored first!</span>" return user << "<span class='warning'>\The [src] must be anchored first!</span>"

View File

@@ -8,7 +8,7 @@ var/list/mass_drivers = list()
use_power = 1 use_power = 1
idle_power_usage = 2 idle_power_usage = 2
active_power_usage = 50 active_power_usage = 50
machine_flags = EMAGGABLE machine_flags = EMAGGABLE | MULTITOOL_MENU
var/power = 1.0 var/power = 1.0
var/code = 1.0 var/code = 1.0
@@ -25,9 +25,9 @@ var/list/mass_drivers = list()
/obj/machinery/mass_driver/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/mass_driver/attackby(obj/item/weapon/W, mob/user as mob)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
if(istype(W, /obj/item/weapon/screwdriver)) if(istype(W, /obj/item/weapon/screwdriver))
user << "You begin to unscrew the bolts off the [src]..." user << "You begin to unscrew the bolts off the [src]..."

View File

@@ -10,13 +10,15 @@
/obj/machinery/telecomms /obj/machinery/telecomms
var/temp = "" // output message var/temp = "" // output message
var/construct_op = 0 var/construct_op = 0
machine_flags = MULTITOOL_MENU
/obj/machinery/telecomms/attackby(obj/item/P as obj, mob/user as mob) /obj/machinery/telecomms/attackby(obj/item/P as obj, mob/user as mob)
// Using a multitool lets you access the receiver's interface // Using a multitool lets you access the receiver's interface
if(istype(P, /obj/item/device/multitool)) . = ..()
attack_hand(user) if(.)
return .
switch(construct_op) switch(construct_op)
if(0) if(0)

View File

@@ -157,6 +157,8 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
new/datum/stack_recipe("Mass Driver frame", /obj/machinery/mass_driver_frame, 3, time = 50, one_per_turf = 1), \ new/datum/stack_recipe("Mass Driver frame", /obj/machinery/mass_driver_frame, 3, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("Tank dispenser", /obj/structure/dispenser/empty, 2, time = 10, one_per_turf = 1), \ new/datum/stack_recipe("Tank dispenser", /obj/structure/dispenser/empty, 2, time = 10, one_per_turf = 1), \
new/datum/stack_recipe("Fireaxe cabinet", /obj/structure/closet/fireaxecabinet/, 2, time = 50, one_per_turf = 1), \ new/datum/stack_recipe("Fireaxe cabinet", /obj/structure/closet/fireaxecabinet/, 2, time = 50, one_per_turf = 1), \
null, \
new/datum/stack_recipe("Vault Door assembly", /obj/structure/door_assembly/door_assembly_vault, 8, time = 50, one_per_turf = 1, on_floor = 1), \
) )
/obj/item/stack/sheet/plasteel /obj/item/stack/sheet/plasteel

View File

@@ -138,7 +138,7 @@
M.requests += O M.requests += O
if (buf.types & DNA2_BUF_SE) if (buf.types & DNA2_BUF_SE)
if(block)// Isolated injector if(block)// Isolated injector
testing("Isolated block [block] injector with contents: [GetValue()]") //testing("Isolated block [block] injector with contents: [GetValue()]")
if (GetState() && block == MONKEYBLOCK && istype(M, /mob/living/carbon/human) ) if (GetState() && block == MONKEYBLOCK && istype(M, /mob/living/carbon/human) )
message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] <span class='warning'>(MONKEY)</span>") message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] <span class='warning'>(MONKEY)</span>")
log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)")
@@ -146,7 +146,7 @@
else else
log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]")
else else
testing("DNA injector with contents: [english_list(buf.dna.SE)]") //testing("DNA injector with contents: [english_list(buf.dna.SE)]")
if (GetState(MONKEYBLOCK) && istype(M, /mob/living/carbon/human) ) if (GetState(MONKEYBLOCK) && istype(M, /mob/living/carbon/human) )
message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] <span class='warning'>(MONKEY)</span>") message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] <span class='warning'>(MONKEY)</span>")
log_attack("[key_name(user)] injected [key_name(M)] with the [name] (MONKEY)") log_attack("[key_name(user)] injected [key_name(M)] with the [name] (MONKEY)")
@@ -173,7 +173,7 @@
if (buf.types & DNA2_BUF_SE) if (buf.types & DNA2_BUF_SE)
if(block)// Isolated injector if(block)// Isolated injector
testing("Isolated block [block] injector with contents: [GetValue()]") //testing("Isolated block [block] injector with contents: [GetValue()]")
if (GetState() && block == MONKEYBLOCK && istype(M, /mob/living/carbon/human) ) if (GetState() && block == MONKEYBLOCK && istype(M, /mob/living/carbon/human) )
message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] <span class='warning'>(MONKEY)</span>") message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the Isolated [name] <span class='warning'>(MONKEY)</span>")
log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name] (MONKEY)")
@@ -181,7 +181,7 @@
else else
log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]") log_attack("[key_name(user)] injected [key_name(M)] with the Isolated [name]")
else else
testing("DNA injector with contents: [english_list(buf.dna.SE)]") //testing("DNA injector with contents: [english_list(buf.dna.SE)]")
if (GetState(MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) if (GetState(MONKEYBLOCK) && istype(M, /mob/living/carbon/human))
message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] <span class='warning'>(MONKEY)</span>") message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] <span class='warning'>(MONKEY)</span>")
log_game("[key_name(user)] injected [key_name(M)] with the [name] (MONKEY)") log_game("[key_name(user)] injected [key_name(M)] with the [name] (MONKEY)")

View File

@@ -103,6 +103,12 @@
airlock_type = "/highsecurity" airlock_type = "/highsecurity"
glass = -1 glass = -1
/obj/structure/door_assembly/door_assembly_vault
base_icon_state = "vault"
base_name = "Vault"
airlock_type = "/vault"
glass = -1
/obj/structure/door_assembly/multi_tile/ /obj/structure/door_assembly/multi_tile/
icon = 'icons/obj/doors/door_assembly2x1.dmi' icon = 'icons/obj/doors/door_assembly2x1.dmi'
dir = EAST dir = EAST

View File

@@ -10,7 +10,7 @@
icon = 'icons/obj/bus.dmi' icon = 'icons/obj/bus.dmi'
icon_state = "adminbus" icon_state = "adminbus"
can_spacemove=1 can_spacemove=1
layer = FLY_LAYER layer = FLY_LAYER+1
pixel_x = -32 pixel_x = -32
pixel_y = -32 pixel_y = -32
var/can_move=1 var/can_move=1
@@ -43,6 +43,7 @@
update_lightsource() update_lightsource()
warp = new/obj/structure/teleportwarp(src.loc) warp = new/obj/structure/teleportwarp(src.loc)
busjuke = new/obj/machinery/media/jukebox/superjuke/adminbus(src.loc) busjuke = new/obj/machinery/media/jukebox/superjuke/adminbus(src.loc)
busjuke.dir = EAST
/obj/structure/stool/bed/chair/vehicle/adminbus/update_mob() /obj/structure/stool/bed/chair/vehicle/adminbus/update_mob()
if(buckled_mob) if(buckled_mob)

View File

@@ -423,6 +423,9 @@
if (istype(O, /obj/item/weapon/reagent_containers)) if (istype(O, /obj/item/weapon/reagent_containers))
var/obj/item/weapon/reagent_containers/RG = O var/obj/item/weapon/reagent_containers/RG = O
if(RG.reagents.total_volume >= RG.reagents.maximum_volume)
user << "<span class='warning'>[RG] is full.</span>"
return
RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this))
user.visible_message("<span class='notice'>[user] fills the [RG] using \the [src].</span>","<span class='notice'>You fill the [RG] using \the [src].</span>") user.visible_message("<span class='notice'>[user] fills the [RG] using \the [src].</span>","<span class='notice'>You fill the [RG] using \the [src].</span>")
return return
@@ -440,8 +443,8 @@
else else
B.deductcharge(1) B.deductcharge(1)
user.visible_message( \ user.visible_message( \
"[user] was stunned by his wet [O].", \ "<span class='warning'>[user] was stunned by \his wet [O.name]!</span>", \
"<span class='warning'>You have wet \the [O], it shocks you!</span>") "<span class='warning'>You have wet \the [O.name], it shocks you!</span>")
return return
if (!isturf(user.loc)) if (!isturf(user.loc))

View File

@@ -107,4 +107,18 @@
// DE-HACK // DE-HACK
/turf/simulated/wall/vault/relativewall() /turf/simulated/wall/vault/relativewall()
return return
var/list/smoothable_unsims = list(
"riveted",
)
/turf/unsimulated/wall/New()
..()
if(icon_state in smoothable_unsims)
relativewall()
relativewall_neighbours()
/turf/unsimulated/wall/relativewall()
var/junction=findSmoothingNeighbors()
icon_state = "[walltype][junction]"

View File

@@ -1,21 +1,26 @@
/turf/unsimulated/wall /turf/unsimulated/wall
name = "wall" name = "riveted wall"
icon = 'icons/turf/walls.dmi' icon = 'icons/turf/walls.dmi'
icon_state = "riveted" icon_state = "riveted"
opacity = 1 opacity = 1
density = 1 density = 1
explosion_block = 2 explosion_block = 2
canSmoothWith = "/turf/unsimulated/wall=0"
var/walltype = "riveted"
/turf/unsimulated/wall/fakeglass /turf/unsimulated/wall/fakeglass
name = "window" name = "window"
icon_state = "fakewindows" icon_state = "fakewindows"
opacity = 0 opacity = 0
canSmoothWith = null
turf/unsimulated/wall/splashscreen turf/unsimulated/wall/splashscreen
name = "Space Station 13" name = "Space Station 13"
icon = null icon = null
icon_state = null icon_state = null
layer = FLY_LAYER layer = FLY_LAYER
canSmoothWith = null
New() New()
var/path = "icons/splashworks/" var/path = "icons/splashworks/"
@@ -27,6 +32,7 @@ turf/unsimulated/wall/splashscreen
/turf/unsimulated/wall/other /turf/unsimulated/wall/other
icon_state = "r_wall" icon_state = "r_wall"
canSmoothWith = null
/turf/unsimulated/wall/cult /turf/unsimulated/wall/cult
name = "wall" name = "wall"
@@ -34,6 +40,7 @@ turf/unsimulated/wall/splashscreen
icon_state = "cult0" icon_state = "cult0"
opacity = 1 opacity = 1
density = 1 density = 1
canSmoothWith = null
/turf/unsimulated/wall/cultify() /turf/unsimulated/wall/cultify()
ChangeTurf(/turf/unsimulated/wall/cult) ChangeTurf(/turf/unsimulated/wall/cult)

View File

@@ -845,6 +845,11 @@ var/global/list/arenas = list()
sleep(2) //giving the game some time to process to avoid unbearable lag spikes when we create a large arena, plus it looks cool. sleep(2) //giving the game some time to process to avoid unbearable lag spikes when we create a large arena, plus it looks cool.
pencil.y++ pencil.y++
pencil.x = x
pencil.y = y+h
T = pencil.loc
T.maptext = name
qdel(pencil) //RIP sweet prince qdel(pencil) //RIP sweet prince
for (var/datum/bomberman_spawn/S in spawns) //removing the soft walls near the spawns for (var/datum/bomberman_spawn/S in spawns) //removing the soft walls near the spawns
@@ -878,6 +883,10 @@ var/global/list/arenas = list()
message_admins("[key_name_admin(user.client)] created a \"[size]\" Bomberman arena at [center.loc.name] ([center.x],[center.y],[center.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[center.x];Y=[center.y];Z=[center.z]'>JMP</A>)") message_admins("[key_name_admin(user.client)] created a \"[size]\" Bomberman arena at [center.loc.name] ([center.x],[center.y],[center.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[center.x];Y=[center.y];Z=[center.z]'>JMP</A>)")
log_game("[key_name_admin(user.client)] created a \"[size]\" Bomberman arena at [center.loc.name] ([center.x],[center.y],[center.z]) ") log_game("[key_name_admin(user.client)] created a \"[size]\" Bomberman arena at [center.loc.name] ([center.x],[center.y],[center.z]) ")
for(var/mob/dead/observer/O in observers)
O << "<spawn class='notice'><b>[user.client.key] created a \"[size]\" Bomberman arena at [center.loc.name]. <A HREF='?src=\ref[O];jumptoarenacood=1;X=[center.x];Y=[center.y];Z=[center.z]'>Click here to JUMP to it.</A></b></span>"
else else
qdel(src) qdel(src)
@@ -957,6 +966,9 @@ var/global/list/arenas = list()
E.visible_message("\icon[E] \The [E] brightens as it appears that a round is starting in [name].") E.visible_message("\icon[E] \The [E] brightens as it appears that a round is starting in [name].")
flick("entertainment_arena",E) flick("entertainment_arena",E)
for(var/mob/dead/observer/O in observers)
O << "<b>A round has began in <A HREF='?src=\ref[O];jumptoarenacood=1;X=[center.x];Y=[center.y];Z=[center.z]'>[name]</A>!</b>"
sleep(40) sleep(40)
for(var/datum/bomberman_spawn/S in spawns) for(var/datum/bomberman_spawn/S in spawns)
if(S.player) if(S.player)
@@ -1113,6 +1125,7 @@ var/global/list/arenas = list()
T.ChangeTurf(/turf/space) T.ChangeTurf(/turf/space)
else else
T.ChangeTurf(/turf/simulated/floor/plating) T.ChangeTurf(/turf/simulated/floor/plating)
T.maptext = null
turfs = list() turfs = list()
arenas -= src arenas -= src
return return

View File

@@ -17,6 +17,7 @@
var/const/RADS_PER_TICK=150 var/const/RADS_PER_TICK=150
var/const/MAX_TEMP=70 // Celsius var/const/MAX_TEMP=70 // Celsius
machine_flags = MULTITOOL_MENU
/obj/machinery/media/transmitter/broadcast/initialize() /obj/machinery/media/transmitter/broadcast/initialize()
testing("[type]/initialize() called!") testing("[type]/initialize() called!")
@@ -49,16 +50,18 @@
broadcast() // Bzzt broadcast() // Bzzt
/obj/machinery/media/transmitter/broadcast/attackby(var/obj/item/W, mob/user) /obj/machinery/media/transmitter/broadcast/attackby(var/obj/item/W, mob/user)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
/obj/machinery/media/transmitter/broadcast/attack_ai(var/mob/user as mob) /obj/machinery/media/transmitter/broadcast/attack_ai(var/mob/user as mob)
src.add_hiddenprint(user) src.add_hiddenprint(user)
attack_hand(user) attack_hand(user)
/obj/machinery/media/transmitter/broadcast/attack_hand(var/mob/user as mob) /obj/machinery/media/transmitter/broadcast/attack_hand(var/mob/user as mob)
update_multitool_menu(user) . = ..()
if(.)
return .
/obj/machinery/media/transmitter/broadcast/multitool_menu(var/mob/user,var/obj/item/device/multitool/P) /obj/machinery/media/transmitter/broadcast/multitool_menu(var/mob/user,var/obj/item/device/multitool/P)
// You need a multitool to use this, or be silicon // You need a multitool to use this, or be silicon

View File

@@ -184,7 +184,7 @@ var/global/loopModeNames=list(
var/state_base = "jukebox2" var/state_base = "jukebox2"
machine_flags = WRENCHMOVE | FIXED2WORK | EMAGGABLE machine_flags = WRENCHMOVE | FIXED2WORK | EMAGGABLE | MULTITOOL_MENU
mech_flags = MECH_SCAN_FAIL mech_flags = MECH_SCAN_FAIL
emag_cost = 0 // because fun/unlimited uses. emag_cost = 0 // because fun/unlimited uses.
@@ -353,10 +353,9 @@ var/global/loopModeNames=list(
/obj/machinery/media/jukebox/attackby(obj/item/W, mob/user) /obj/machinery/media/jukebox/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
..()
if(istype(W,/obj/item/weapon/card/id)) if(istype(W,/obj/item/weapon/card/id))
if(!selected_song || screen!=JUKEBOX_SCREEN_PAYMENT) if(!selected_song || screen!=JUKEBOX_SCREEN_PAYMENT)
visible_message("<span class='notice'>The machine buzzes.</span>","<span class='warning'>You hear a buzz.</span>") visible_message("<span class='notice'>The machine buzzes.</span>","<span class='warning'>You hear a buzz.</span>")

View File

@@ -45,6 +45,7 @@
var/last_ad_cyc = 0 // Last world.time of an ad cycle var/last_ad_cyc = 0 // Last world.time of an ad cycle
var/list/ad_queue = 0 // Ads queued to play var/list/ad_queue = 0 // Ads queued to play
machine_flags = MULTITOOL_MENU
var/state_base = "tapedeck" var/state_base = "tapedeck"
/obj/machinery/media/tapedeck/attack_ai(var/mob/user) /obj/machinery/media/tapedeck/attack_ai(var/mob/user)
@@ -188,9 +189,9 @@
/obj/machinery/media/jukebox/attackby(obj/item/W, mob/user) /obj/machinery/media/jukebox/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
if(istype(W, /obj/item/weapon/card/emag)) if(istype(W, /obj/item/weapon/card/emag))
current_song = 0 current_song = 0
if(!emagged) if(!emagged)
@@ -203,6 +204,7 @@
user.visible_message("<span class='warning'>[user.name] slides something into the [src.name]'s card-reader.</span>","<span class='warning'>You short out the [src.name].</span>") user.visible_message("<span class='warning'>[user.name] slides something into the [src.name]'s card-reader.</span>","<span class='warning'>You short out the [src.name].</span>")
update_icon() update_icon()
update_music() update_music()
return 1
else if(istype(W,/obj/item/weapon/wrench)) else if(istype(W,/obj/item/weapon/wrench))
var/un = !anchored ? "" : "un" var/un = !anchored ? "" : "un"
user.visible_message("<span class='notice'>[user.name] begins [un]locking \the [src.name]'s casters.</span>","<span class='notice'>You begin [un]locking \the [src.name]'s casters.</span>") user.visible_message("<span class='notice'>[user.name] begins [un]locking \the [src.name]'s casters.</span>","<span class='notice'>You begin [un]locking \the [src.name]'s casters.</span>")

View File

@@ -26,10 +26,10 @@
var/resource_efficiency = 1 var/resource_efficiency = 1
var/id_tag = "clone_pod" var/id_tag = "clone_pod"
machine_flags = EMAGGABLE | SCREWTOGGLE | CROWDESTROY machine_flags = EMAGGABLE | SCREWTOGGLE | CROWDESTROY | MULTITOOL_MENU
l_color = "#7BF9FF" l_color = "#7BF9FF"
/obj/machinery/cloning/clonepod/multitool_menu(var/mob/user, var/obj/item/device/multitool/P) /obj/machinery/cloning/clonepod/multitool_menu(var/mob/user, var/obj/item/device/multitool/P)
return "" return ""
@@ -343,6 +343,9 @@
//Let's unlock this early I guess. Might be too early, needs tweaking. //Let's unlock this early I guess. Might be too early, needs tweaking.
/obj/machinery/cloning/clonepod/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/machinery/cloning/clonepod/attackby(obj/item/weapon/W as obj, mob/user as mob)
. = ..()
if(.)
return .
if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (!src.check_access(W)) if (!src.check_access(W))
user << "<span class='warning'>Access Denied.</span>" user << "<span class='warning'>Access Denied.</span>"
@@ -358,10 +361,6 @@
user.drop_item(W) user.drop_item(W)
qdel(W) qdel(W)
return return
if(ismultitool(W))
update_multitool_menu(user)
else
..()
//Put messages in the connected computer's temp var for display. //Put messages in the connected computer's temp var for display.
/obj/machinery/cloning/clonepod/proc/connected_message(var/message) /obj/machinery/cloning/clonepod/proc/connected_message(var/message)

View File

@@ -82,17 +82,16 @@
#undef CLONEPODRANGE #undef CLONEPODRANGE
/obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob) /obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob)
. = ..()
if(.)
return .
if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES
if (!src.diskette) if (!src.diskette)
user.drop_item(W, src) user.drop_item(W, src)
src.diskette = W src.diskette = W
user << "You insert [W]." user << "You insert [W]."
src.updateUsrDialog() src.updateUsrDialog()
return return 1
if(ismultitool(W))
update_multitool_menu(user)
else
..()
return return
/obj/machinery/computer/cloning/attack_paw(mob/user as mob) /obj/machinery/computer/cloning/attack_paw(mob/user as mob)

View File

@@ -788,6 +788,20 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
// host.ckey = src.ckey // host.ckey = src.ckey
// //host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>" // //host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
/mob/dead/observer/verb/find_arena()
set category = "Ghost"
set name = "Search For Arenas"
set desc = "Try to find an Arena to polish your robust bomb placement skills.."
if(!arenas.len)
usr << "There are no arenas in the world! Ask the admins to spawn one."
return
var/datum/bomberman_arena/arena_target = input("Which arena do you wish to reach?", "Arena Search Panel") in arenas
usr << "Reached [arena_target]"
usr.loc = arena_target.center
//BEGIN TELEPORT HREF CODE //BEGIN TELEPORT HREF CODE
/mob/dead/observer/Topic(href, href_list) /mob/dead/observer/Topic(href, href_list)
if(usr != src) if(usr != src)
@@ -836,6 +850,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return return
loc = T loc = T
following = null following = null
if(href_list["jumptoarenacood"])
var/x = text2num(href_list["X"])
var/y = text2num(href_list["Y"])
var/z = text2num(href_list["Z"])
var/client/C = usr.client
sleep(2)
C.jumptocoord(x,y,z)
..() ..()
//END TELEPORT HREF CODE //END TELEPORT HREF CODE

View File

@@ -77,4 +77,4 @@ var/global/list/boo_phrases_silicon=list(
A:spookymode=1 A:spookymode=1
if(istype(A, /obj/machinery/ai_status_display)) if(istype(A, /obj/machinery/ai_status_display))
A:spookymode=1 A:spookymode=1

View File

@@ -72,6 +72,7 @@
if(!src.species) if(!src.species)
if(new_species_name) src.set_species(new_species_name) if(new_species_name) src.set_species(new_species_name)
else src.set_species() else src.set_species()
default_language = get_default_language()
create_reagents(1000) create_reagents(1000)

View File

@@ -89,7 +89,8 @@
update_muts=1 update_muts=1
if(!istype(src, /mob/living/carbon/monkey/diona)) if(!istype(src, /mob/living/carbon/monkey/diona))
add_language("Chimpanzee") add_language(LANGUAGE_MONKEY)
default_language = all_languages[LANGUAGE_MONKEY]
..() ..()
update_icons() update_icons()

View File

@@ -79,6 +79,7 @@ var/list/ai_list = list()
add_language(LANGUAGE_MONKEY, 1) add_language(LANGUAGE_MONKEY, 1)
add_language(LANGUAGE_VOX, 1) add_language(LANGUAGE_VOX, 1)
add_language(LANGUAGE_TRADEBAND, 1) add_language(LANGUAGE_TRADEBAND, 1)
default_language = all_languages[LANGUAGE_SOL_COMMON]
real_name = pickedName real_name = pickedName
name = real_name name = real_name
anchored = 1 anchored = 1

View File

@@ -147,6 +147,7 @@
cell_component.installed = 1 cell_component.installed = 1
playsound(loc, startup_sound, 75, 1) playsound(loc, startup_sound, 75, 1)
default_language = all_languages[LANGUAGE_SOL_COMMON]
// setup the PDA and its name // setup the PDA and its name
/mob/living/silicon/robot/proc/setup_PDA() /mob/living/silicon/robot/proc/setup_PDA()

View File

@@ -57,7 +57,8 @@
..() ..()
name = text("[initial(name)] ([rand(1, 1000)])") name = text("[initial(name)] ([rand(1, 1000)])")
real_name = name real_name = name
add_language("Cult") add_language(LANGUAGE_CULT)
default_language = all_languages[LANGUAGE_CULT]
for(var/spell in construct_spells) for(var/spell in construct_spells)
src.add_spell(new spell, "const_spell_ready") src.add_spell(new spell, "const_spell_ready")
updateicon() updateicon()

View File

@@ -20,7 +20,7 @@
var/shot_number = 0 var/shot_number = 0
var/locked = 0 var/locked = 0
machine_flags = EMAGGABLE | WRENCHMOVE | FIXED2WORK | WELD_FIXED machine_flags = EMAGGABLE | WRENCHMOVE | FIXED2WORK | WELD_FIXED | MULTITOOL_MENU
var/frequency = 0 var/frequency = 0
var/id_tag = null var/id_tag = null
@@ -249,11 +249,9 @@
return -1 return -1
/obj/machinery/power/emitter/attackby(obj/item/W, mob/user) /obj/machinery/power/emitter/attackby(obj/item/W, mob/user)
if(..()) . = ..()
return 1 if(.)
return .
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(emagged) if(emagged)

View File

@@ -11,7 +11,7 @@
wabbajack(change) wabbajack(change)
/obj/item/projectile/change/proc/wabbajack(var/mob/M) //WHY: as mob in living_mob_list /obj/item/projectile/change/proc/wabbajack(var/mob/living/M) //WHY: as mob in living_mob_list
if(istype(M, /mob/living) && M.stat != DEAD) if(istype(M, /mob/living) && M.stat != DEAD)
if(M.monkeyizing) if(M.monkeyizing)
return return
@@ -53,7 +53,9 @@
switch(randomize) switch(randomize)
if("monkey") if("monkey")
new_mob = new /mob/living/carbon/monkey(M.loc) new_mob = new /mob/living/carbon/monkey(M.loc)
new_mob.languages |= M.languages var/mob/living/carbon/monkey/Monkey = new_mob
Monkey.languages |= M.languages
if(M.default_language) Monkey.default_language = M.default_language
if("robot") if("robot")
new_mob = new /mob/living/silicon/robot(M.loc) new_mob = new /mob/living/silicon/robot(M.loc)
new_mob.setGender(M.gender) new_mob.setGender(M.gender)
@@ -62,7 +64,8 @@
var/mob/living/silicon/robot/Robot = new_mob var/mob/living/silicon/robot/Robot = new_mob
Robot.mmi = new /obj/item/device/mmi(new_mob) Robot.mmi = new /obj/item/device/mmi(new_mob)
Robot.mmi.transfer_identity(M) //Does not transfer key/client. Robot.mmi.transfer_identity(M) //Does not transfer key/client.
new_mob.languages |= M.languages Robot.languages |= M.languages
if(M.default_language) Robot.default_language = M.default_language
if("mommi") if("mommi")
new_mob = new /mob/living/silicon/robot/mommi(M.loc) new_mob = new /mob/living/silicon/robot/mommi(M.loc)
new_mob.setGender(M.gender) new_mob.setGender(M.gender)
@@ -71,6 +74,8 @@
var/mob/living/silicon/robot/mommi/MoMMI = new_mob var/mob/living/silicon/robot/mommi/MoMMI = new_mob
MoMMI.mmi = new /obj/item/device/mmi(new_mob) MoMMI.mmi = new /obj/item/device/mmi(new_mob)
MoMMI.mmi.transfer_identity(M) //Does not transfer key/client. MoMMI.mmi.transfer_identity(M) //Does not transfer key/client.
MoMMI.languages |= M.languages
if(M.default_language) MoMMI.default_language = M.default_language
if("slime") if("slime")
var/slimey = pick("",\ var/slimey = pick("",\
"/purple",\ "/purple",\
@@ -100,7 +105,9 @@
slimey = text2path("/mob/living/carbon/slime[slimey]") slimey = text2path("/mob/living/carbon/slime[slimey]")
new_mob = new slimey(M.loc) new_mob = new slimey(M.loc)
new_mob.languages |= M.languages var/mob/living/carbon/slime/Slime = new_mob
Slime.languages |= M.languages
if(M.default_language) Slime.default_language = M.default_language
if("xeno") if("xeno")
var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") var/alien_caste = pick("Hunter","Sentinel","Drone","Larva")
switch(alien_caste) switch(alien_caste)
@@ -108,7 +115,9 @@
if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) if("Sentinel") new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc)
if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) if("Drone") new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc)
else new_mob = new /mob/living/carbon/alien/larva(M.loc) else new_mob = new /mob/living/carbon/alien/larva(M.loc)
new_mob.languages |= M.languages var/mob/living/carbon/alien/Alien = new_mob
Alien.languages |= M.languages
if(M.default_language) Alien.default_language = M.default_language
if("human") if("human")
new_mob = new /mob/living/carbon/human(M.loc, delay_ready_dna=1) new_mob = new /mob/living/carbon/human(M.loc, delay_ready_dna=1)
@@ -121,6 +130,8 @@
var/newspecies = pick(all_species) var/newspecies = pick(all_species)
H.set_species(newspecies) H.set_species(newspecies)
H.generate_name() H.generate_name()
H.languages |= M.languages
if(M.default_language) H.default_language = M.default_language
if("furry") if("furry")
new_mob = new /mob/living/carbon/human(M.loc, delay_ready_dna=1) new_mob = new /mob/living/carbon/human(M.loc, delay_ready_dna=1)
@@ -131,6 +142,8 @@
var/mob/living/carbon/human/H = new_mob var/mob/living/carbon/human/H = new_mob
H.set_species("Tajaran") // idfk H.set_species("Tajaran") // idfk
H.languages |= M.languages
if(M.default_language) H.default_language = M.default_language
H.generate_name() H.generate_name()
/* RIP /* RIP
if("cluwne") if("cluwne")

View File

@@ -24,7 +24,7 @@
var/frequency = 1367 var/frequency = 1367
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
machine_flags = SCREWTOGGLE | CROWDESTROY machine_flags = SCREWTOGGLE | CROWDESTROY | MULTITOOL_MENU
/obj/machinery/conveyor/centcom_auto /obj/machinery/conveyor/centcom_auto
id_tag = "round_end_belt" id_tag = "round_end_belt"
@@ -188,9 +188,6 @@
. = ..() . = ..()
if(.) if(.)
return . return .
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
user.drop_item(W, src.loc) user.drop_item(W, src.loc)
return 0 return 0
@@ -292,6 +289,7 @@
var/frequency = 1367 var/frequency = 1367
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
machine_flags = MULTITOOL_MENU
anchored = 1 anchored = 1
@@ -379,9 +377,9 @@
radio_connection.post_signal(src, signal, range = CONVEYOR_CONTROL_RANGE) radio_connection.post_signal(src, signal, range = CONVEYOR_CONTROL_RANGE)
/obj/machinery/conveyor_switch/attackby(var/obj/item/W, mob/user) /obj/machinery/conveyor_switch/attackby(var/obj/item/W, mob/user)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
if(istype(W, /obj/item/weapon/wrench)) if(istype(W, /obj/item/weapon/wrench))
user << "<span class='notice'>Deconstructing \the [src]...</span>" user << "<span class='notice'>Deconstructing \the [src]...</span>"
if(do_after(user,50)) if(do_after(user,50))
@@ -392,7 +390,6 @@
new /obj/item/stack/rods(T,1) new /obj/item/stack/rods(T,1)
del(src) del(src)
return 1 return 1
return ..()
/obj/machinery/conveyor_switch/oneway /obj/machinery/conveyor_switch/oneway
var/convdir = 1 //Set to 1 or -1 depending on which way you want the conveyor to go. (In other words keep at 1 and set the proper dir on the belts.) var/convdir = 1 //Set to 1 or -1 depending on which way you want the conveyor to go. (In other words keep at 1 and set the proper dir on the belts.)

View File

@@ -66,6 +66,7 @@
//Add types to this list so it doesn't make a message or get desroyed by the Supermatter on touch. //Add types to this list so it doesn't make a message or get desroyed by the Supermatter on touch.
var/list/message_exclusions = list(/obj/effect/effect/sparks) var/list/message_exclusions = list(/obj/effect/effect/sparks)
machine_flags = MULTITOOL_MENU
/obj/machinery/power/supermatter/shard //Small subtype, less efficient and more sensitive, but less boom. /obj/machinery/power/supermatter/shard //Small subtype, less efficient and more sensitive, but less boom.
name = "Supermatter Shard" name = "Supermatter Shard"
@@ -339,9 +340,9 @@
return return
/obj/machinery/power/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob) /obj/machinery/power/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
if(istype(W, /obj/item/device/multitool)) . = ..()
update_multitool_menu(user) if(.)
return 1 return .
user.visible_message("<span class=\"warning\">\The [user] touches \a [W] to \the [src] as a silence fills the room...</span>",\ user.visible_message("<span class=\"warning\">\The [user] touches \a [W] to \the [src] as a silence fills the room...</span>",\
"<span class=\"danger\">You touch \the [W] to \the [src] when everything suddenly goes silent.\"</span>\n<span class=\"notice\">\The [W] flashes into dust as you flinch away from \the [src].</span>",\ "<span class=\"danger\">You touch \the [W] to \the [src] when everything suddenly goes silent.\"</span>\n<span class=\"notice\">\The [W] flashes into dust as you flinch away from \the [src].</span>",\

View File

@@ -962,6 +962,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define FIXED2WORK 16 //does it need to be anchored to work? Try to use this with WRENCHMOVE - hooks into power code #define FIXED2WORK 16 //does it need to be anchored to work? Try to use this with WRENCHMOVE - hooks into power code
#define EJECTNOTDEL 32 //when we destroy the machine, does it remove all its items or destroy them? #define EJECTNOTDEL 32 //when we destroy the machine, does it remove all its items or destroy them?
#define WELD_FIXED 64 //if it is attacked by a welder and is anchored, it'll toggle between welded and unwelded to the floor #define WELD_FIXED 64 //if it is attacked by a welder and is anchored, it'll toggle between welded and unwelded to the floor
#define MULTITOOL_MENU 128 //if it has multitool menu functionality inherently
#define MAX_N_OF_ITEMS 999 // Used for certain storage machinery, BYOND infinite loop detector doesn't look things over 1000. #define MAX_N_OF_ITEMS 999 // Used for certain storage machinery, BYOND infinite loop detector doesn't look things over 1000.
@@ -1152,11 +1153,12 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define LANGUAGE_CLATTER "Clatter" #define LANGUAGE_CLATTER "Clatter"
#define LANGUAGE_MONKEY "Monkey" #define LANGUAGE_MONKEY "Monkey"
#define LANGUAGE_VOX "Vox-pidgin" #define LANGUAGE_VOX "Vox-pidgin"
#define LANGUAGE_CULT "Cult"
//#define SAY_DEBUG 0 //#define SAY_DEBUG 0
#ifdef SAY_DEBUG #ifdef SAY_DEBUG
#warning SOME ASSHOLE FORGOT TO COMMENT SAY_DEBUG BEFORE COMMITTING #warning SOME ASSHOLE FORGOT TO COMMENT SAY_DEBUG BEFORE COMMITTING
#define say_testing(a,x) a << ("([__FILE__]L[__LINE__] SAYDEBUG) [x]") #define say_testing(a,x) a << ("([__FILE__]L[__LINE__] SAYDEBUG) [x]")
#else #else
#define say_testing(a,x) #define say_testing(a,x) null << "[x][a]"
#endif #endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 168 KiB