Merge branch 'master' of https://github.com/tgstation/-tg-station into goodbyedeadspace

Conflicts:
	code/game/mecha/mecha.dm
This commit is contained in:
paprka
2014-08-06 15:22:56 -07:00
77 changed files with 412 additions and 258 deletions
+5
View File
@@ -30,3 +30,8 @@
#define MINERAL_MATERIAL_AMOUNT 2000
//The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
#define CLICK_CD_MELEE 8
#define CLICK_CD_RANGE 4
//click cooldowns, in tenths of a second
+4 -4
View File
@@ -102,7 +102,7 @@
W.afterattack(A,src,1,params) // 1 indicates adjacency
else
if(ismob(A))
changeNext_move(8)
changeNext_move(CLICK_CD_MELEE)
UnarmedAttack(A)
return
@@ -119,7 +119,7 @@
W.afterattack(A,src,1,params) // 1: clicking something Adjacent
else
if(ismob(A))
changeNext_move(8)
changeNext_move(CLICK_CD_MELEE)
UnarmedAttack(A, 1)
return
else // non-adjacent click
@@ -150,7 +150,7 @@
*/
/mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag)
if(ismob(A))
changeNext_move(8)
changeNext_move(CLICK_CD_MELEE)
return
/*
@@ -261,7 +261,7 @@
return
/mob/living/LaserEyes(atom/A)
changeNext_move(4)
changeNext_move(CLICK_CD_RANGE)
var/turf/T = get_turf(src)
var/turf/U = get_turf(A)
+1 -1
View File
@@ -298,7 +298,7 @@ datum/hud/New(mob/owner)
if(hud_used && client)
if(ishuman(src))
hud_used.show_hud() //Shows the next hud preset
usr << "<span class ='info'>Switched HUD mode.</span>"
usr << "<span class ='info'>Switched HUD mode. Press F12 to toggle.</span>"
else
usr << "<span class ='warning'>Inventory hiding is currently only supported for human mobs, sorry.</span>"
else
+1 -1
View File
@@ -11,7 +11,7 @@
visible_message("<span class='danger'>[src] has been hit by [user] with [W].</span>")
/mob/living/attackby(obj/item/I, mob/user)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
I.attack(src, user)
/mob/living/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
+1 -1
View File
@@ -24,7 +24,7 @@
ManualFollow(A)
// Otherwise jump
else
else if(A.loc)
loc = get_turf(A)
/mob/dead/observer/ClickOn(var/atom/A, var/params)
+4
View File
@@ -207,6 +207,10 @@ var/global/datum/controller/supply_shuttle/supply_shuttle
return 1
if(istype(A,/obj/item/device/radio/beacon))
return 1
if(istype(A,/obj/effect/blob))
return 1
if(istype(A,/obj/effect/spider/spiderling))
return 1
for(var/i=1, i<=A.contents.len, i++)
var/atom/B = A.contents[i]
+3 -3
View File
@@ -899,7 +899,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
containername = "water tank crate"
/datum/supply_packs/misc/lasertag
name = "LaserTag Crate"
name = "Laser Tag Crate"
contains = list(/obj/item/weapon/gun/energy/laser/redtag,
/obj/item/weapon/gun/energy/laser/redtag,
/obj/item/weapon/gun/energy/laser/redtag,
@@ -915,7 +915,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/clothing/head/helmet/redtaghelm,
/obj/item/clothing/head/helmet/bluetaghelm)
cost = 15
containername = "LaserTag Crate"
containername = "laser tag crate"
/datum/supply_packs/misc/religious_supplies
name = "Religious Supplies Crate"
@@ -1064,7 +1064,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/obj/item/clothing/head/collectable/petehat)
name = "Collectable hat crate!"
cost = 200
containername = "Collectable hats crate! Brought to you by Bass.inc!"
containername = "collectable hats crate! Brought to you by Bass.inc!"
/datum/supply_packs/misc/randomised/New()
manifest += "Contains any [num_contained] of:"
+7
View File
@@ -398,6 +398,13 @@ var/list/uplink_items = list()
cost = 5
excludefrom = list(/datum/game_mode/traitor/double_agents)
/datum/uplink_item/device_tools/rad_laser
name = "Radioactive Microlaser"
desc = "A radioactive microlaser disguised as a standard Nanotrasen health analyzer. When used, it emits a powerful burst of radiation, which, after a short delay, can incapitate all but the most protected of humanoids. \
It has two settings: intensity, which controls the power of the radiation, and wavelength, which controls how long the radiation delay is."
item = /obj/item/device/rad_laser
cost = 4
/datum/uplink_item/device_tools/syndicate_detonator
name = "Syndicate Detonator"
desc = "The Syndicate Detonator is a companion device to the Syndicate Bomb. Simply press the included button and an encrypted radio frequency will instruct all live syndicate bombs to detonate. \
+2 -2
View File
@@ -50,13 +50,13 @@
unacidable = 1//temporary until I decide whether the borg can be removed. -veyveyr
/obj/structure/showcase/fakeid
name = "Centcom Identification Console"
name = "\improper Centcom identification console"
desc = "You can use this to change ID's."
icon = 'icons/obj/computer.dmi'
icon_state = "id"
/obj/structure/showcase/fakesec
name = "Centcom Security Records"
name = "\improper Centcom security records"
desc = "Used to view and edit personnel's security records"
icon = 'icons/obj/computer.dmi'
icon_state = "security"
+3 -2
View File
@@ -95,7 +95,7 @@
icon = 'icons/obj/items.dmi'
/obj/item/weapon/legcuffs
name = "legcuffs"
name = "leg cuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon = 'icons/obj/items.dmi'
@@ -282,6 +282,7 @@
/obj/item/weapon/syntiflesh
name = "syntiflesh"
desc = "Meat that appears...strange..."
gender = PLURAL
icon = 'icons/obj/food.dmi'
icon_state = "meat"
flags = CONDUCT
@@ -342,7 +343,7 @@
///////////////////////////////////////Stock Parts /////////////////////////////////
/obj/item/weapon/storage/part_replacer
name = "Rapid Part Exchange Device"
name = "rapid part exchange device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
item_state = "RPED"
-2
View File
@@ -486,8 +486,6 @@
qdel(G)
/obj/machinery/dna_scannernew/attack_hand(mob/user)
if(..())
return
toggle_open(user)
add_fingerprint(user)
-3
View File
@@ -17,9 +17,6 @@ var/list/blob_nodes = list()
restricted_jobs = list("Cyborg", "AI")
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/declared = 0
var/cores_to_spawn = 1
+2 -2
View File
@@ -150,7 +150,7 @@
/obj/effect/blob/attackby(var/obj/item/weapon/W, var/mob/user)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
src.visible_message("<span class='danger'>The [src.name] has been attacked with \the [W][(user ? " by [user]" : "")]!</span>")
var/damage = 0
@@ -167,7 +167,7 @@
return
/obj/effect/blob/attack_animal(mob/living/simple_animal/M as mob)
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1)
src.visible_message("<span class='danger'>The [src.name] has been attacked by \the [M]!</span>")
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
@@ -34,9 +34,6 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
var/const/prob_right_objective_l = 25 //lower bound on probability of determining the objective correctly
var/const/prob_right_objective_h = 50 //upper bound on probability of determining the objective correctly
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/const/changeling_amount = 4 //hard limit on changelings if scaling is turned off
/datum/game_mode/changeling/announce()
@@ -78,9 +75,6 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
changeling.special_role = "Changeling"
forge_changeling_objectives(changeling)
greet_changeling(changeling)
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
return
-5
View File
@@ -34,8 +34,6 @@
uplink_uses = 10
var/finished = 0
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/list/startwords = list("blood","join","self","hell")
var/list/secondwords = list("travel", "see", "tech", "destroy", "other", "hide")
@@ -108,9 +106,6 @@
cult_mind.current << "\blue You are a member of the cult!"
memorize_cult_objectives(cult_mind)
cult_mind.special_role = "Cultist"
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
+1 -1
View File
@@ -1,5 +1,5 @@
/obj/item/weapon/melee/cultblade
name = "Cult Blade"
name = "cult blade"
desc = "An arcane weapon wielded by the followers of Nar-Sie"
icon_state = "cultblade"
item_state = "cultblade"
+4 -4
View File
@@ -4,24 +4,24 @@
icon = 'icons/obj/cult.dmi'
/obj/structure/cult/talisman
name = "Altar"
name = "altar"
desc = "A bloodstained altar dedicated to Nar-Sie"
icon_state = "talismanaltar"
/obj/structure/cult/forge
name = "Daemon forge"
name = "daemon forge"
desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie"
icon_state = "forge"
/obj/structure/cult/pylon
name = "Pylon"
name = "pylon"
desc = "A floating crystal that hums with an unearthly energy"
icon_state = "pylon"
luminosity = 5
/obj/structure/cult/tome
name = "Desk"
name = "desk"
desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl"
icon_state = "tomealtar"
// luminosity = 5
-5
View File
@@ -6,9 +6,6 @@
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800
/datum/game_mode/announce()
world << "<B>The current game mode is - Extended Role-Playing!</B>"
world << "<B>Just have fun and role-play!</B>"
@@ -17,6 +14,4 @@
return 1
/datum/game_mode/extended/post_setup()
spawn (rand(waittime_l, waittime_h)) // To reduce extended meta.
send_intercept()
..()
+5
View File
@@ -32,6 +32,9 @@
var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag
var/datum/mind/sacrifice_target = null
var/const/waittime_l = 600
var/const/waittime_h = 1800 // started at 1800
/datum/game_mode/proc/announce() //to be calles when round starts
world << "<B>Notice</B>: [src] did not define announce()"
@@ -75,6 +78,8 @@
if(revdata.revision)
feedback_set_details("revision","[revdata.revision]")
feedback_set_details("server_ip","[world.internet_address]:[world.port]")
spawn (rand(waittime_l, waittime_h))
send_intercept()
return 1
///make_antag_chance()
@@ -13,8 +13,7 @@
uplink_welcome = "Crazy AI Uplink Console:"
uplink_uses = 10
var/const/waittime_l = 600
var/const/waittime_h = 1800 // started at 1800
var/AI_win_timeleft = 1800 //started at 1800, in case I change this for testing round end.
var/malf_mode_declared = 0
@@ -90,8 +89,6 @@
*/
if(emergency_shuttle)
emergency_shuttle.always_fake_recall = 1
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
-4
View File
@@ -1,8 +1,6 @@
/datum/game_mode/meteor
name = "meteor"
config_tag = "meteor"
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/const/meteordelay = 2000
var/nometeors = 1
required_players = 0
@@ -18,8 +16,6 @@
/datum/game_mode/meteor/post_setup()
// defer_powernet_rebuild = 2//Might help with the lag
spawn (rand(waittime_l, waittime_h))
send_intercept()
spawn(meteordelay)
nometeors = 0
..()
-3
View File
@@ -12,9 +12,6 @@
restricted_jobs = list("Cyborg", "AI")
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/carriers_to_make = 1
var/list/carriers = list()
-5
View File
@@ -15,8 +15,6 @@
uplink_uses = 10
var/const/agents_possible = 5 //If we ever need more syndicate agents.
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/nukes_left = 1 // Call 3714-PRAY right now and order more nukes! Limited offer!
var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station
@@ -139,9 +137,6 @@
var/obj/machinery/nuclearbomb/the_bomb = new /obj/machinery/nuclearbomb(nuke_spawn.loc)
the_bomb.r_code = nuke_code
spawn (rand(waittime_l, waittime_h))
send_intercept()
return ..()
+1 -1
View File
@@ -1,7 +1,7 @@
var/bomb_set
/obj/machinery/nuclearbomb
name = "\improper Nuclear Fission Explosive"
name = "nuclear fission explosive"
desc = "Uh oh. RUN!!!!"
icon = 'icons/obj/stationobjs.dmi'
icon_state = "nuclearbomb0"
+1 -1
View File
@@ -62,7 +62,7 @@
/obj/item/weapon/pinpointer/advpinpointer
name = "Advanced Pinpointer"
name = "advanced pinpointer"
icon = 'icons/obj/device.dmi'
desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal."
var/mode = 0 // Mode 0 locates disk, mode 1 locates coordinates.
@@ -27,8 +27,6 @@
var/finished = 0
var/checkwin_counter = 0
var/const/max_headrevs = 3
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
///////////////////////////
//Announces the game type//
///////////////////////////
@@ -91,8 +89,6 @@
modePlayer += head_revolutionaries
if(emergency_shuttle)
emergency_shuttle.always_fake_recall = 1
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
-5
View File
@@ -20,9 +20,6 @@
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
var/traitors_possible = 4 //hard limit on traitors if scaling is turned off
var/scale_modifier = 1 // Used for gamemodes, that are a child of traitor, that need more than the usual.
@@ -73,8 +70,6 @@
if(!exchange_blue)
exchange_blue = -1 //Block latejoiners from getting exchange objectives
modePlayer += traitors
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
return 1
-6
View File
@@ -15,9 +15,6 @@
var/finished = 0
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
/datum/game_mode/wizard/announce()
world << "<B>The current game mode is - Wizard!</B>"
world << "<B>There is a \red SPACE WIZARD\black on the station. You can't let him achieve his objective!</B>"
@@ -46,9 +43,6 @@
equip_wizard(wizard.current)
name_wizard(wizard.current)
greet_wizard(wizard)
spawn (rand(waittime_l, waittime_h))
send_intercept()
..()
return
+39 -42
View File
@@ -87,21 +87,21 @@
if(1.0)
for(var/atom/movable/A in src)
A.loc = loc
ex_act(severity)
A.ex_act(severity)
qdel(src)
return
if(2.0)
if(prob(50))
for(var/atom/movable/A in src)
A.loc = loc
ex_act(severity)
A.ex_act(severity)
qdel(src)
return
if(3.0)
if(prob(25))
for(var/atom/movable/A in src)
A.loc = loc
ex_act(severity)
A.ex_act(severity)
qdel(src)
@@ -131,48 +131,17 @@
..()
open_machine()
/obj/machinery/sleeper/Destroy()
var/turf/T = loc
T.contents += contents
..()
/obj/machinery/sleeper/attack_hand(mob/user)
if(..())
return
var/dat = "<h3>Sleeper Status</h3>"
dat += "<div class='statusDisplay'>"
if(!occupant)
dat += "Sleeper Unoccupied"
if(stat & (BROKEN|NOPOWER))
if(state_open)
close_machine()
else
open_machine()
else
dat += "[occupant.name] => "
switch(occupant.stat) //obvious, see what their status is
if(0)
dat += "<span class='good'>Conscious</span>"
if(1)
dat += "<span class='average'>Unconscious</span>"
else
dat += "<span class='bad'>DEAD</span>"
dat += "<br />"
dat += "<div class='line'><div class='statusLabel'>Health:</div><div class='progressBar'><div style='width: [occupant.health]%;' class='progressFill good'></div></div><div class='statusValue'>[occupant.health]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Brute Damage:</div><div class='progressBar'><div style='width: [occupant.getBruteLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getBruteLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Resp. Damage:</div><div class='progressBar'><div style='width: [occupant.getOxyLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getOxyLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Toxin Content:</div><div class='progressBar'><div style='width: [occupant.getToxLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getToxLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Burn Severity:</div><div class='progressBar'><div style='width: [occupant.getFireLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getFireLoss()]%</div></div>"
dat += "<HR><div class='line'><div class='statusLabel'>Paralysis Summary:</div><div class='statusValue'>[round(occupant.paralysis)]% [occupant.paralysis ? "([round(occupant.paralysis / 4)] seconds left)" : ""]</div></div>"
if(occupant.reagents.reagent_list.len)
for(var/datum/reagent/R in occupant.reagents.reagent_list)
dat += text("<div class='line'><div class='statusLabel'>[R.name]:</div><div class='statusValue'>[] units</div></div>", round(R.volume, 0.1))
dat += "</div>"
dat += "<A href='?src=\ref[src];refresh=1'>Scan</A>"
dat += "<A href='?src=\ref[src];[state_open ? "close=1'>Close</A>" : "open=1'>Open</A>"]"
sleeperUI(user)
/obj/machinery/sleeper/proc/sleeperUI(mob/user)
var/dat
dat += "<h3>Injector</h3>"
if(occupant)
dat += "<A href='?src=\ref[src];inject=inaprovaline'>Inject Inaprovaline</A>"
@@ -189,6 +158,34 @@
if(C)
dat += "<BR><span class='linkOff'>Inject [C.name]</span>"
dat += "<h3>Sleeper Status</h3>"
dat += "<A href='?src=\ref[src];refresh=1'>Scan</A>"
dat += "<A href='?src=\ref[src];[state_open ? "close=1'>Close</A>" : "open=1'>Open</A>"]"
dat += "<div class='statusDisplay'>"
if(!occupant)
dat += "Sleeper Unoccupied"
else
dat += "[occupant.name] => "
switch(occupant.stat) //obvious, see what their status is
if(0)
dat += "<span class='good'>Conscious</span>"
if(1)
dat += "<span class='average'>Unconscious</span>"
else
dat += "<span class='bad'>DEAD</span>"
dat += "<br />"
dat += "<div class='line'><div class='statusLabel'>Health:</div><div class='progressBar'><div style='width: [occupant.health]%;' class='progressFill good'></div></div><div class='statusValue'>[occupant.health]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Brute Damage:</div><div class='progressBar'><div style='width: [occupant.getBruteLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getBruteLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Resp. Damage:</div><div class='progressBar'><div style='width: [occupant.getOxyLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getOxyLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Toxin Content:</div><div class='progressBar'><div style='width: [occupant.getToxLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getToxLoss()]%</div></div>"
dat += "<div class='line'><div class='statusLabel'>\> Burn Severity:</div><div class='progressBar'><div style='width: [occupant.getFireLoss()]%;' class='progressFill bad'></div></div><div class='statusValue'>[occupant.getFireLoss()]%</div></div>"
dat += "<HR><div class='line'><div class='statusLabel'>Paralysis Summary:</div><div class='statusValue'>[round(occupant.paralysis)]% [occupant.paralysis ? "([round(occupant.paralysis / 4)] seconds left)" : ""]</div></div>"
if(occupant.reagents.reagent_list.len)
for(var/datum/reagent/R in occupant.reagents.reagent_list)
dat += text("<div class='line'><div class='statusLabel'>[R.name]:</div><div class='statusValue'>[] units</div></div>", round(R.volume, 0.1))
dat += "</div>"
var/datum/browser/popup = new(user, "sleeper", "Sleeper Console", 520, 540) //Set up the popup browser window
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.set_content(dat)
+3 -3
View File
@@ -53,7 +53,7 @@
return
/obj/machinery/bot/attack_alien(var/mob/living/carbon/alien/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
src.health -= rand(15,30)*brute_dam_coeff
src.visible_message("\red <B>[user] has slashed [src]!</B>")
playsound(src.loc, 'sound/weapons/slice.ogg', 25, 1, -1)
@@ -64,7 +64,7 @@
/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0) return
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
src.health -= M.melee_damage_upper
src.visible_message("\red <B>[M] has [M.attacktext] [src]!</B>")
add_logs(M, src, "attacked", admin=0)
@@ -93,7 +93,7 @@
Emag(user)
else
if(hasvar(W,"force") && hasvar(W,"damtype"))
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
switch(W.damtype)
if("fire")
src.health -= W.force * fire_dam_coeff
+1
View File
@@ -190,6 +190,7 @@
itemname = P.name
info = P.notehtml
U << "You hold \the [itemname] up to the camera ..."
U.changeNext_move(CLICK_CD_MELEE)
for(var/mob/O in player_list)
if(istype(O, /mob/living/silicon/ai))
var/mob/living/silicon/ai/AI = O
+38 -14
View File
@@ -102,23 +102,47 @@
if(3.0)
dat += text("<B>Records Maintenance</B><HR>\n<A href='?src=\ref[];back=1'>Backup To Disk</A><BR>\n<A href='?src=\ref[];u_load=1'>Upload From Disk</A><BR>\n<A href='?src=\ref[];del_all=1'>Delete All Records</A><BR>\n<BR>\n<A href='?src=\ref[];screen=1'>Back</A>", src, src, src, src)
if(4.0)
dat += "<CENTER><B>Medical Record</B></CENTER><BR>"
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
if(active1 in data_core.general)
dat += text("Name: [] ID: []<BR>\nSex: <A href='?src=\ref[];field=sex'>[]</A><BR>\nAge: <A href='?src=\ref[];field=age'>[]</A><BR>\nFingerprint: <A href='?src=\ref[];field=fingerprint'>[]</A><BR>\nPhysical Status: <A href='?src=\ref[];field=p_stat'>[]</A><BR>\nMental Status: <A href='?src=\ref[];field=m_stat'>[]</A><BR>", src.active1.fields["name"], src.active1.fields["id"], src, src.active1.fields["sex"], src, src.active1.fields["age"], src, src.active1.fields["fingerprint"], src, src.active1.fields["p_stat"], src, src.active1.fields["m_stat"])
dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td></tr>"
dat += "<tr><td>ID:</td><td>[active1.fields["id"]]</td></tr>"
dat += "<tr><td>Sex:</td><td><A href='?src=\ref[src];field=sex'>&nbsp;[active1.fields["sex"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Age:</td><td><A href='?src=\ref[src];field=age'>&nbsp;[active1.fields["age"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];field=fingerprint'>&nbsp;[active1.fields["fingerprint"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Physical Status:</td><td><A href='?src=\ref[src];field=p_stat'>&nbsp;[active1.fields["p_stat"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Mental Status:</td><td><A href='?src=\ref[src];field=m_stat'>&nbsp;[active1.fields["m_stat"]]&nbsp;</A></td></tr>"
else
dat += "<B>General Record Lost!</B><BR>"
dat += "<tr><td>General Record Lost!</td></tr>"
dat += "<tr><td><br><b><font size='4'>Medical Data</font></b></td></tr>"
if(active2 in data_core.medical)
dat += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: <A href='?src=\ref[];field=blood_type'>[]</A><BR>\nDNA: <A href='?src=\ref[];field=b_dna'>[]</A><BR>\n<BR>\nMinor Disabilities: <A href='?src=\ref[];field=mi_dis'>[]</A><BR>\nDetails: <A href='?src=\ref[];field=mi_dis_d'>[]</A><BR>\n<BR>\nMajor Disabilities: <A href='?src=\ref[];field=ma_dis'>[]</A><BR>\nDetails: <A href='?src=\ref[];field=ma_dis_d'>[]</A><BR>\n<BR>\nAllergies: <A href='?src=\ref[];field=alg'>[]</A><BR>\nDetails: <A href='?src=\ref[];field=alg_d'>[]</A><BR>\n<BR>\nCurrent Diseases: <A href='?src=\ref[];field=cdi'>[]</A> (per disease info placed in log/comment section)<BR>\nDetails: <A href='?src=\ref[];field=cdi_d'>[]</A><BR>\n<BR>\nImportant Notes:<BR>\n\t<A href='?src=\ref[];field=notes'>[]</A><BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", src, src.active2.fields["blood_type"], src, src.active2.fields["b_dna"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, src.active2.fields["notes"])
dat += "<tr><td>Blood Type:</td><td><A href='?src=\ref[src];field=blood_type'>&nbsp;[active2.fields["blood_type"]]&nbsp;</A></td></tr>"
dat += "<tr><td>DNA:</td><td><A href='?src=\ref[src];field=b_dna'>&nbsp;[active2.fields["b_dna"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Minor Disabilities:</td><td><br><A href='?src=\ref[src];field=mi_dis'>&nbsp;[active2.fields["mi_dis"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=mi_dis_d'>&nbsp;[active2.fields["mi_dis_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Major Disabilities:</td><td><br><A href='?src=\ref[src];field=ma_dis'>&nbsp;[active2.fields["ma_dis"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=ma_dis_d'>&nbsp;[active2.fields["ma_dis_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Allergies:</td><td><br><A href='?src=\ref[src];field=alg'>&nbsp;[active2.fields["alg"]]&nbsp;</A></td></tr>"
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=alg_d'>&nbsp;[active2.fields["alg_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Current Diseases:</td><td><br><A href='?src=\ref[src];field=cdi'>&nbsp;[active2.fields["cdi"]]&nbsp;</A></td></tr>" //(per disease info placed in log/comment section)
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=cdi_d'>&nbsp;[active2.fields["cdi_d"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Important Notes:</td><td><br><A href='?src=\ref[src];field=notes'>&nbsp;[active2.fields["notes"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br><b><font size='4'>Comments/Log</font></b></td></tr>"
var/counter = 1
while(src.active2.fields[text("com_[]", counter)])
dat += text("[]<BR><A href='?src=\ref[];del_c=[]'>Delete Entry</A><BR><BR>", src.active2.fields[text("com_[]", counter)], src, counter)
dat += "<tr><td>[active2.fields[text("com_[]", counter)]]</td></tr><tr><td><A href='?src=\ref[src];del_c=[counter]'>Delete Entry</A></td></tr>"
counter++
dat += text("<A href='?src=\ref[];add_c=1'>Add Entry</A><BR><BR>", src)
dat += text("<A href='?src=\ref[];del_r=1'>Delete Record (Medical Only)</A><BR><BR>", src)
dat += "<tr><td><A href='?src=\ref[src];add_c=1'>Add Entry</A></td></tr>"
dat += "<tr><td><br><A href='?src=\ref[src];del_r=1'>Delete Record (Medical Only)</A></td></tr>"
else
dat += "<B>Medical Record Lost!</B><BR>"
dat += text("<A href='?src=\ref[src];new=1'>New Record</A><BR><BR>")
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
dat += "<tr><td>Medical Record Lost!</tr>"
dat += "<tr><td><br><A href='?src=\ref[src];new=1'>New Record</A></td></tr>"
dat += "<tr><td><A href='?src=\ref[src];print_p=1'>Print Record</A></td></tr>"
dat += "<tr><td><A href='?src=\ref[src];screen=2'>Back</A></td></tr>"
dat += "</table>"
if(5.0)
dat += "<CENTER><B>Virus Database</B></CENTER>"
for(var/Dt in typesof(/datum/disease/))
@@ -333,11 +357,11 @@
if(active2)
src.temp = text("<B>Blood Type:</B><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=an'>A-</A> <A href='?src=\ref[];temp=1;blood_type=ap'>A+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=bn'>B-</A> <A href='?src=\ref[];temp=1;blood_type=bp'>B+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=abn'>AB-</A> <A href='?src=\ref[];temp=1;blood_type=abp'>AB+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=on'>O-</A> <A href='?src=\ref[];temp=1;blood_type=op'>O+</A><BR>", src, src, src, src, src, src, src, src)
if("b_dna")
if(active1)
var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text),1,MAX_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
if(active2)
var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text),1,MAX_MESSAGE_LEN)
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
return
src.active1.fields["dna"] = t1
src.active2.fields["b_dna"] = t1
else
else if (href_list["p_stat"])
+8 -2
View File
@@ -100,7 +100,13 @@
usr << "<span class='notice'>Too far away to view contents.</span>"
/obj/machinery/atmospherics/unary/cryo_cell/attack_hand(mob/user)
ui_interact(user)
if(stat & (NOPOWER|BROKEN))
if(state_open == 1)
close_machine()
else
open_machine()
else
ui_interact(user)
/**
@@ -189,7 +195,6 @@
on = 1
if(href_list["open"])
on = 0
open_machine()
if(href_list["close"])
@@ -235,6 +240,7 @@
/obj/machinery/atmospherics/unary/cryo_cell/open_machine()
if(!state_open && !panel_open)
on = 0
layer = 3
if(occupant)
occupant.bodytemperature = Clamp(occupant.bodytemperature, 261, 360)
+1 -1
View File
@@ -881,7 +881,7 @@ About the new airlock wires panel:
user << "<span class='notice'>You begin [welded ? "unwelding":"welding"] the airlock...</span>"
playsound(loc, 'sound/items/Welder2.ogg', 40, 1)
if(do_after(user,40,5,1))
if(!density && !operating)//Door must be closed to weld.
if(density && !operating)//Door must be closed to weld.
if(W.remove_fuel(0,user))
playsound(loc, 'sound/items/welder.ogg', 50, 1)
welded = !welded
+2 -2
View File
@@ -194,7 +194,7 @@
/obj/machinery/door/window/proc/attack_generic(mob/user as mob, damage = 0)
if(src.operating)
return
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
user.visible_message("<span class='danger'>[user] smashes against the [src.name].</span>", \
"<span class='userdanger'>[user] smashes against the [src.name].</span>")
@@ -263,7 +263,7 @@
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) )
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
var/aforce = I.force
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
visible_message("<span class='danger'>\The [src] has been hit by [user] with [I].</span>")
+2
View File
@@ -116,6 +116,8 @@ Class Procs:
/obj/machinery/Destroy()
machines.Remove(src)
if(occupant)
open_machine()
..()
/obj/machinery/process()//If you dont use process or power why are you here
+2 -2
View File
@@ -300,7 +300,7 @@
else
//if the turret was attacked with the intention of harming it:
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
health -= I.force * 0.5
if(health <= 0)
die()
@@ -985,7 +985,7 @@ Status: []<BR>"},
user << "<span class='notice'>Access denied.</span>"
else
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
Parent_Turret.health -= I.force * 0.5
if(Parent_Turret.health <= 0)
Parent_Turret.die()
+1 -1
View File
@@ -100,7 +100,7 @@
spark_system.start()
playsound(src.loc, "sparks", 50, 1)
else
else if(!balance) //to prevent coins from magically disappearing
..()
/obj/machinery/computer/slot_machine/attack_hand(mob/living/user)
+4 -4
View File
@@ -276,7 +276,7 @@
/obj/machinery/turret/attackby(obj/item/weapon/W, mob/user)//I can't believe no one added this before/N
..()
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/weapons/smash.ogg', 60, 1)
src.spark_system.start()
src.health -= W.force * 0.5
@@ -410,7 +410,7 @@
/obj/machinery/turret/attack_animal(mob/living/simple_animal/M as mob)
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
if(M.melee_damage_upper == 0) return
if(!(stat & BROKEN))
visible_message("\red <B>[M] [M.attacktext] [src]!</B>")
@@ -427,7 +427,7 @@
/obj/machinery/turret/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
if(!(stat & BROKEN))
playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1)
visible_message("\red <B>[] has slashed at []!</B>", M, src)
@@ -548,7 +548,7 @@
/obj/machinery/gun_turret/attack_alien(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
user.visible_message("[user] slashes at [src]", "You slash at [src]")
take_damage(15)
return
+8
View File
@@ -465,7 +465,11 @@
qdel(src)
/obj/mecha/attack_hand(mob/user as mob)
<<<<<<< HEAD
user.changeNext_move(8) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
=======
user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
>>>>>>> c79b9fe6bff3c198033292303aade78a0c4e21f9
src.log_message("Attack by hand/paw. Attacker - [user].",1)
if ((HULK in user.mutations) && !prob(src.deflect_chance))
@@ -633,7 +637,11 @@
return
/obj/mecha/proc/dynattackby(obj/item/weapon/W as obj, mob/user as mob)
<<<<<<< HEAD
user.changeNext_move(8) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
=======
user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code.
>>>>>>> c79b9fe6bff3c198033292303aade78a0c4e21f9
src.log_message("Attacked by [W]. Attacker - [user]")
if(prob(src.deflect_chance))
+3
View File
@@ -111,6 +111,7 @@
/obj/structure/alien/resin/attack_alien(mob/user)
user.changeNext_move(CLICK_CD_MELEE)
if(islarva(user))
return
user.visible_message("<span class='danger'>[user] claws at the resin!</span>")
@@ -122,6 +123,7 @@
/obj/structure/alien/resin/attackby(obj/item/I, mob/user)
user.changeNext_move(CLICK_CD_MELEE)
health -= I.force
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
healthcheck()
@@ -196,6 +198,7 @@
/obj/structure/alien/weeds/attackby(obj/item/I, mob/user)
user.changeNext_move(CLICK_CD_MELEE)
if(I.attack_verb.len)
visible_message("<span class='danger'>[src] has been [pick(I.attack_verb)] with [I] by [user].</span>")
else
@@ -155,7 +155,7 @@
keyslot2 = new /obj/item/device/encryptionkey/headset_service
/obj/item/device/radio/headset/headset_cent
name = "centcom headset"
name = "\improper Centcom headset"
desc = "A headset used by the upper echelons of Nanotrasen. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science."
icon_state = "cent_headset"
item_state = "headset"
@@ -142,7 +142,7 @@
recording = 0
update_icon()
else
usr << "<span class='notice'The tape is full.</span>"
usr << "<span class='notice'>The tape is full.</span>"
/obj/item/device/taperecorder/verb/stop()
@@ -4,6 +4,7 @@ Miscellaneous traitor devices
BATTERER
RADIOACTIVE MICROLASER
*/
@@ -56,6 +57,90 @@ effective or pretty fucking useless.
if(times_used >= max_uses)
icon_state = "battererburnt"
/*
The radioactive microlaser, a device disguised as a health analyzer used to irradiate people.
The strength of the radiation is determined by the 'intensity' setting, while the delay between
the scan and the irradiation kicking in is determined by the wavelength.
Each scan will cause the microlaser to have a brief cooldown period. Higher intensity will increase
the cooldown, while higher wavelength will decrease it.
Wavelength is also slightly increased by the intensity as well.
*/
/obj/item/device/rad_laser
name = "health analyzer"
icon_state = "health"
item_state = "analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject. A strange microlaser is hooked on to the scanning end."
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = 1.0
throw_speed = 3
throw_range = 7
m_amt = 400
origin_tech = "magnets=3;biotech=5;syndicate=3"
var/intensity = 5 // how much damage the radiation does
var/wavelength = 10 // time it takes for the radiation to kick in, in seconds
var/used = 0 // is it cooling down?
/obj/item/device/rad_laser/attack(mob/living/M as mob, mob/living/user as mob)
if(!used)
..()
user.visible_message(text("<span class='notice'>[] has analyzed []'s vitals.</span>", user, M))
var/cooldown = round(max(100,(((intensity*8)-(wavelength/2))+(intensity*2))*10))
used = 1
icon_state = "health1"
handle_cooldown(cooldown) // splits off to handle the cooldown while handling wavelength
spawn((wavelength+(intensity*4))*10)
if(M)
if(intensity >= 5)
M.apply_effect(round(intensity/1.5), PARALYZE)
M.apply_effect(intensity*10, IRRADIATE)
else
user << "<span class='danger'>The radioactive microlaser is still recharging.</span>"
/obj/item/device/rad_laser/proc/handle_cooldown(var/cooldown)
spawn(cooldown)
used = 0
icon_state = "health"
/obj/item/device/rad_laser/attack_self(mob/user as mob)
..()
interact(user)
/obj/item/device/rad_laser/interact(mob/user as mob)
user.set_machine(src)
var/cooldown = round(max(10,((intensity*8)-(wavelength/2))+(intensity*2)))
var/dat = {"
Radiation Intensity: <A href='?src=\ref[src];radint=-5'>-</A><A href='?src=\ref[src];radint=-1'>-</A> [intensity] <A href='?src=\ref[src];radint=1'>+</A><A href='?src=\ref[src];radint=5'>+</A><BR>
Radiation Wavelength: <A href='?src=\ref[src];radwav=-5'>-</A><A href='?src=\ref[src];radwav=-1'>-</A> [(wavelength+(intensity*4))] <A href='?src=\ref[src];radwav=1'>+</A><A href='?src=\ref[src];radwav=5'>+</A><BR>
Laser Cooldown: [cooldown] Seconds<BR>
"}
var/datum/browser/popup = new(user, "radlaser", "Radioactive Microlaser Interface", 400, 240)
popup.set_content(dat)
popup.open()
/obj/item/device/rad_laser/Topic(href, href_list)
if(!usr.canUseTopic(src))
return 1
usr.set_machine(src)
if(href_list["radint"])
var/amount = text2num(href_list["radint"])
amount += intensity
intensity = max(1,(min(10,amount)))
else if(href_list["radwav"])
var/amount = text2num(href_list["radwav"])
amount += wavelength
wavelength = max(1,(min(120,amount)))
updateUsrDialog()
add_fingerprint(usr)
return
@@ -31,7 +31,7 @@
update_icon()
return
else if(istype(O, /obj/item/weapon))
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/W = O
if(src.smashed || src.localopened)
if(localopened)
+2 -2
View File
@@ -66,7 +66,7 @@
/obj/structure/displaycase/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
src.health -= W.force
src.healthcheck()
..()
@@ -76,7 +76,7 @@
return src.attack_hand(user)
/obj/structure/displaycase/attack_hand(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if (src.destroyed && src.occupied)
new /obj/item/weapon/gun/energy/laser/captain( src.loc )
user << "\b You deactivate the hover field built into the case."
+5 -5
View File
@@ -26,7 +26,7 @@
attack_hand(user)
/obj/structure/grille/attack_hand(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] hits [src].</span>", \
"<span class='warning'>You hit [src].</span>", \
@@ -42,7 +42,7 @@
/obj/structure/grille/attack_alien(mob/user as mob)
if(istype(user, /mob/living/carbon/alien/larva)) return
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] mangles [src].</span>", \
"<span class='warning'>You mangle [src].</span>", \
@@ -54,7 +54,7 @@
return
/obj/structure/grille/attack_slime(mob/living/carbon/slime/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if(!user.is_adult) return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
@@ -67,7 +67,7 @@
return
/obj/structure/grille/attack_animal(var/mob/living/simple_animal/M as mob)
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
if(M.melee_damage_upper == 0) return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
@@ -100,7 +100,7 @@
return
/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
if(istype(W, /obj/item/weapon/wirecutters))
if(!shock(user, 100))
+2 -2
View File
@@ -61,7 +61,7 @@
/obj/structure/lamarr/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
src.health -= W.force
src.healthcheck()
..()
@@ -71,7 +71,7 @@
return src.attack_hand(user)
/obj/structure/lamarr/attack_hand(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if (src.destroyed)
return
else
+5 -3
View File
@@ -521,6 +521,8 @@
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
if(locate(/obj/structure/table) in get_turf(mover))
return 1
else
return 0
@@ -559,16 +561,16 @@
if (istype(I, /obj/item/weapon/wrench))
table_destroy(2, user)
return
if (istype(I, /obj/item/weapon/storage/bag/tray))
var/obj/item/weapon/storage/bag/tray/T = I
if(T.contents.len > 0) // If the tray isn't empty
var/list/obj/item/oldContents = T.contents.Copy()
T.quick_empty()
for(var/obj/item/C in oldContents)
C.loc = src.loc
user.visible_message("<span class='notice'>[user] empties [I] on [src].</span>")
return
// If the tray IS empty, continue on (tray will be placed on the table like other items)
+3 -3
View File
@@ -109,7 +109,7 @@
R.add_fingerprint(user)
qdel(src)
else
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
user.visible_message("<span class='notice'>[user] knocks on [src].</span>")
add_fingerprint(user)
playsound(loc, 'sound/effects/Glasshit.ogg', 50, 1)
@@ -122,7 +122,7 @@
/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime
if(!can_be_reached(user))
return
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
health -= damage
if(health <= 0)
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
@@ -191,7 +191,7 @@
qdel(src)
else
if(I.damtype == BRUTE || I.damtype == BURN)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
hit(I.force)
if(health <= 7)
anchored = 0
+4 -4
View File
@@ -93,7 +93,7 @@
dismantle_wall()
/turf/simulated/wall/attack_paw(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if ((HULK in user.mutations))
if (prob(hardness))
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
@@ -109,7 +109,7 @@
return src.attack_hand(user)
/turf/simulated/wall/attack_animal(var/mob/living/simple_animal/M)
M.changeNext_move(8)
M.changeNext_move(CLICK_CD_MELEE)
if(M.environment_smash >= 2)
if(istype(src, /turf/simulated/wall/r_wall))
if(M.environment_smash == 3)
@@ -125,7 +125,7 @@
return
/turf/simulated/wall/attack_hand(mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if (HULK in user.mutations)
if (prob(hardness))
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
@@ -145,7 +145,7 @@
return
/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
user << "<span class='warning'>You don't have the dexterity to do this!</span>"
return
+4 -4
View File
@@ -626,8 +626,8 @@ var/global/list/g_fancy_list_of_safe_types = null
"tournament gangster",
"tournament chef",
"tournament janitor",
"lasertag red",
"lasertag blue",
"laser tag red",
"laser tag blue",
"pirate",
"space pirate",
"soviet admiral",
@@ -739,7 +739,7 @@ var/global/list/g_fancy_list_of_safe_types = null
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
if ("lasertag red")
if ("laser tag red")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/red(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/red(M), slot_gloves)
@@ -750,7 +750,7 @@ var/global/list/g_fancy_list_of_safe_types = null
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/laser/redtag(M), slot_s_store)
if ("lasertag blue")
if ("laser tag blue")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/blue(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/blue(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/blue(M), slot_gloves)
+2 -2
View File
@@ -86,7 +86,7 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
obj/item/clothing/head/helmet/redtaghelm
name = "Red LaserTag Helmet"
name = "red laser tag helmet"
desc = "They have chosen their own end."
icon_state = "redtaghelm"
flags = HEADCOVERSEYES
@@ -96,7 +96,7 @@ obj/item/clothing/head/helmet/redtaghelm
flags_inv = HIDEEARS|HIDEEYES
obj/item/clothing/head/helmet/bluetaghelm
name = "Blue LaserTag Helmet"
name = "blue laser tag helmet"
desc = "They'll need more men."
icon_state = "bluetaghelm"
flags = HEADCOVERSEYES
+1 -1
View File
@@ -248,7 +248,7 @@
/obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (!W || !user || !W.type) return
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
var/override = 0
+4 -4
View File
@@ -21,7 +21,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
* Library Public Computer
*/
/obj/machinery/librarypubliccomp
name = "Library Visitor Console"
name = "library visitor console"
icon = 'icons/obj/library.dmi'
icon_state = "computer"
anchored = 1
@@ -119,7 +119,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
// TODO: Make this an actual /obj/machinery/computer that can be crafted from circuit boards and such
// It is August 22nd, 2012... This TODO has already been here for months.. I wonder how long it'll last before someone does something about it.
/obj/machinery/librarycomp
name = "Book Inventory Management Console"
name = "book inventory management console"
icon = 'icons/obj/library.dmi'
icon_state = "computer"
anchored = 1
@@ -399,7 +399,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
* Library Scanner
*/
/obj/machinery/libraryscanner
name = "Scanner Control Interface"
name = "scanner control interface"
icon = 'icons/obj/library.dmi'
icon_state = "bigscanner"
anchored = 1
@@ -454,7 +454,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f
* Book binder
*/
/obj/machinery/bookbinder
name = "Book Binder"
name = "book binder"
icon = 'icons/obj/library.dmi'
icon_state = "binder"
anchored = 1
@@ -1,5 +1,5 @@
/obj/machinery/computer/shuttle/labor
name = "Labor Shuttle Console"
name = "labor shuttle console"
icon = 'icons/obj/computer.dmi'
icon_state = "shuttle"
circuit = /obj/item/weapon/circuitboard/labor_shuttle
@@ -8,7 +8,7 @@
/obj/machinery/computer/shuttle/labor/one_way
name = "Prisoner Shuttle Console"
name = "prisoner shuttle console"
desc = "A one-way shuttle console, used to summon the shuttle to the labor camp."
circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way
req_access = list( )
@@ -1,7 +1,7 @@
/**********************Prisoners' Console**************************/
/obj/machinery/mineral/labor_claim_console
name = "Point Claim Console"
name = "point claim console"
desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners."
name = "stacking machine console"
icon = 'icons/obj/machines/mining_machines.dmi'
@@ -34,7 +34,7 @@
/obj/machinery/mineral/labor_claim_console/attack_hand(user as mob)
name = "Point Claim Console"
name = "point claim console"
icon = 'icons/obj/machines/mining_machines.dmi'
icon_state = "console"
desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners."
+1 -1
View File
@@ -4,7 +4,7 @@
/obj/structure/ore_box
icon = 'icons/obj/mining.dmi'
icon_state = "orebox"
name = "Ore Box"
name = "ore box"
desc = "It's heavy"
density = 1
+45 -39
View File
@@ -306,77 +306,83 @@
var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask)
var/list/obscured = check_obscured_slots()
var/dat = {"
<B>Left Hand:</B> <A href='?src=\ref[src];item=[slot_l_hand]'> [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "<font color=grey>Empty</font>"]</A><BR>
<B>Right Hand:</B> <A href='?src=\ref[src];item=[slot_r_hand]'> [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "<font color=grey>Empty</font>"]</A><BR>
"}
var/dat = {"<table>
<tr><td><B>Left Hand:</B></td><td><A href='?src=\ref[src];item=[slot_l_hand]'>[(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "<font color=grey>Empty</font>"]</A></td></tr>
<tr><td><B>Right Hand:</B></td><td><A href='?src=\ref[src];item=[slot_r_hand]'>[(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "<font color=grey>Empty</font>"]</A></td></tr>
<tr><td>&nbsp;</td></tr>"}
dat += "<BR><B>Back:</B> <A href='?src=\ref[src];item=[slot_back]'> [(back && !(back.flags&ABSTRACT)) ? back : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Back:</B></td><td><A href='?src=\ref[src];item=[slot_back]'>[(back && !(back.flags&ABSTRACT)) ? back : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(back, /obj/item/weapon/tank))
dat += "<BR>[TAB]&#8627;<A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "&nbsp;<A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "<BR>"
dat += "</td></tr><tr><td>&nbsp;</td></tr>"
dat += "<BR><B>Head:</B> <A href='?src=\ref[src];item=[slot_head]'> [(head && !(head.flags&ABSTRACT)) ? head : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Head:</B></td><td><A href='?src=\ref[src];item=[slot_head]'>[(head && !(head.flags&ABSTRACT)) ? head : "<font color=grey>Empty</font>"]</A></td></tr>"
if(slot_wear_mask in obscured)
dat += "<BR><font color=grey><B>Mask:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Mask:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Mask:</B> <A href='?src=\ref[src];item=[slot_wear_mask]'> [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Mask:</B></td><td><A href='?src=\ref[src];item=[slot_wear_mask]'>[(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "<font color=grey>Empty</font>"]</A></td></tr>"
if(slot_glasses in obscured)
dat += "<BR><font color=grey><B>Eyes:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Eyes:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Eyes:</B> <A href='?src=\ref[src];item=[slot_glasses]'> [(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Eyes:</B></td><td><A href='?src=\ref[src];item=[slot_glasses]'>[(glasses && !(glasses.flags&ABSTRACT)) ? glasses : "<font color=grey>Empty</font>"]</A></td></tr>"
if(slot_ears in obscured)
dat += "<BR><font color=grey><B>Ears:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Ears:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Ears:</B> <A href='?src=\ref[src];item=[slot_ears]'> [(ears && !(ears.flags&ABSTRACT)) ? ears : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Ears:</B></td><td><A href='?src=\ref[src];item=[slot_ears]'>[(ears && !(ears.flags&ABSTRACT)) ? ears : "<font color=grey>Empty</font>"]</A></td></tr>"
dat += "<BR>"
dat += "<tr><td>&nbsp;</td></tr>"
dat += "<BR><B>Exosuit:</B> <A href='?src=\ref[src];item=[slot_wear_suit]'> [(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Exosuit:</B></td><td><A href='?src=\ref[src];item=[slot_wear_suit]'>[(wear_suit && !(wear_suit.flags&ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A></td></tr>"
if(wear_suit)
dat += "<BR>[TAB]&#8627;<B>Suit Storage:</B> <A href='?src=\ref[src];item=[slot_s_store]'>[(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(wear_suit, /obj/item/weapon/tank))
dat += "<BR>[TAB][TAB]&#8627;<A href='?src=\ref[src];internal=[slot_s_store]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "<tr><td>&nbsp;&#8627;<B>Suit Storage:</B></td><td><A href='?src=\ref[src];item=[slot_s_store]'>[(s_store && !(s_store.flags&ABSTRACT)) ? s_store : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(s_store, /obj/item/weapon/tank))
dat += "&nbsp;<A href='?src=\ref[src];internal=[slot_s_store]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr>"
else
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>Suit Storage:</B></font></td></tr>"
if(slot_shoes in obscured)
dat += "<BR><font color=grey><B>Shoes:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Shoes:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Shoes:</B> <A href='?src=\ref[src];item=[slot_shoes]'> [(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Shoes:</B></td><td><A href='?src=\ref[src];item=[slot_shoes]'>[(shoes && !(shoes.flags&ABSTRACT)) ? shoes : "<font color=grey>Empty</font>"]</A></td></tr>"
if(slot_gloves in obscured)
dat += "<BR><font color=grey><B>Gloves:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Gloves:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Gloves:</B> <A href='?src=\ref[src];item=[slot_gloves]'> [(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Gloves:</B></td><td><A href='?src=\ref[src];item=[slot_gloves]'>[(gloves && !(gloves.flags&ABSTRACT)) ? gloves : "<font color=grey>Empty</font>"]</A></td></tr>"
if(slot_w_uniform in obscured)
dat += "<BR><font color=grey><B>Uniform:</B> Obscured</font>"
dat += "<tr><td><font color=grey><B>Uniform:</B></font></td><td><font color=grey>Obscured</font></td></tr>"
else
dat += "<BR><B>Uniform:</B> <A href='?src=\ref[src];item=[slot_w_uniform]'> [(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "<font color=grey>Empty</font>"]</A>"
if((w_uniform) || (dna && dna.species.nojumpsuit))
dat += "<BR>[TAB]&#8627;<B>Belt:</B> <A href='?src=\ref[src];item=[slot_belt]'> [(belt && !(belt.flags&ABSTRACT)) ? belt : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
dat += "<BR>[TAB][TAB]&#8627;<A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "<BR>[TAB]&#8627;<B>Pockets:</B> <A href='?src=\ref[src];pockets=left'>[(l_store && !(l_store.flags&ABSTRACT)) ? "Left (Full)" : "<font color=grey>Left (Empty)</font>"]</A>"
dat += " <A href='?src=\ref[src];pockets=right'>[(r_store && !(r_store.flags&ABSTRACT)) ? "Right (Full)" : "<font color=grey>Right (Empty)</font>"]</A>"
dat += "<BR>[TAB]&#8627;<B>ID:</B> <A href='?src=\ref[src];item=[slot_wear_id]'>[(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "<font color=grey>Empty</font>"]</A>"
dat += "<tr><td><B>Uniform:</B></td><td><A href='?src=\ref[src];item=[slot_w_uniform]'>[(w_uniform && !(w_uniform.flags&ABSTRACT)) ? w_uniform : "<font color=grey>Empty</font>"]</A></td></tr>"
dat += "<BR>"
if(w_uniform == null || (slot_w_uniform in obscured) || (dna && dna.species.nojumpsuit))
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>Pockets:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>ID:</B></font></td></tr>"
dat += "<tr><td><font color=grey>&nbsp;&#8627;<B>Belt:</B></font></td></tr>"
else
dat += "<tr><td>&nbsp;&#8627;<B>Belt:</B></td><td><A href='?src=\ref[src];item=[slot_belt]'>[(belt && !(belt.flags&ABSTRACT)) ? belt : "<font color=grey>Empty</font>"]</A>"
if(has_breathable_mask && istype(belt, /obj/item/weapon/tank))
dat += "&nbsp;<A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
dat += "</td></tr>"
dat += "<tr><td>&nbsp;&#8627;<B>Pockets:</B></td><td><A href='?src=\ref[src];pockets=left'>[(l_store && !(l_store.flags&ABSTRACT)) ? "Left (Full)" : "<font color=grey>Left (Empty)</font>"]</A>"
dat += "&nbsp;<A href='?src=\ref[src];pockets=right'>[(r_store && !(r_store.flags&ABSTRACT)) ? "Right (Full)" : "<font color=grey>Right (Empty)</font>"]</A></td></tr>"
dat += "<tr><td>&nbsp;&#8627;<B>ID:</B></td><td><A href='?src=\ref[src];item=[slot_wear_id]'>[(wear_id && !(wear_id.flags&ABSTRACT)) ? wear_id : "<font color=grey>Empty</font>"]</A></td></tr>"
if(handcuffed)
dat += "<BR><B>Handcuffed:</B> <A href='?src=\ref[src];item=[slot_handcuffed]'>Remove</A>"
dat += "<tr><td><B>Handcuffed:</B> <A href='?src=\ref[src];item=[slot_handcuffed]'>Remove</A></td></tr>"
if(legcuffed)
dat += "<BR><A href='?src=\ref[src];item=[slot_legcuffed]'>Legcuffed</A>"
dat += "<tr><td><A href='?src=\ref[src];item=[slot_legcuffed]'>Legcuffed</A></td></tr>"
dat += {"
<BR>
<BR><A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
dat += {"</table>
<A href='?src=\ref[user];mach_close=mob\ref[src]'>Close</A>
"}
var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 340, 500)
var/datum/browser/popup = new(user, "mob\ref[src]", "[src]", 440, 510)
popup.set_content(dat)
popup.open()
@@ -204,6 +204,7 @@ Please contact me on #coderbus IRC. ~Carnie x
remove_overlay(AUGMENTS_LAYER)
var/list/standing = list()
var/g = (gender == FEMALE) ? "f" : "m"
if(getlimb(/obj/item/organ/limb/robot/r_arm))
@@ -217,7 +218,7 @@ Please contact me on #coderbus IRC. ~Carnie x
standing += image("icon"='icons/mob/augments.dmi', "icon_state"="l_leg_s", "layer"=-AUGMENTS_LAYER)
if(getlimb(/obj/item/organ/limb/robot/chest))
standing += image("icon"='icons/mob/augments.dmi', "icon_state"="chest_s", "layer"=-AUGMENTS_LAYER)
standing += image("icon"='icons/mob/augments.dmi', "icon_state"="chest_[g]_s", "layer"=-AUGMENTS_LAYER)
if(getlimb(/obj/item/organ/limb/robot/head))
standing += image("icon"='icons/mob/augments.dmi', "icon_state"="head_s", "layer"=-AUGMENTS_LAYER)
@@ -398,7 +398,7 @@
if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch))
harvest()
else
user.changeNext_move(8)
user.changeNext_move(CLICK_CD_MELEE)
if(O.force)
if(O.force >= force_threshold)
var/damage = O.force
@@ -108,6 +108,8 @@
powered = 0
update_icon()
investigate_log("lost power and turned <font color='red'>off</font>","singulo")
log_game("Emitter lost power in ([x],[y],[z])")
message_admins("Emitter lost power in ([x],[y],[z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
return
src.last_shot = world.time
+1 -1
View File
@@ -10,7 +10,7 @@
return 0
if(i > 1)
newshot()
user.changeNext_move(4)
user.changeNext_move(CLICK_CD_RANGE)
update_icon()
return 1
+1 -1
View File
@@ -58,7 +58,7 @@
/obj/item/projectile/lasertag
name = "lasertag beam"
name = "laser tag beam"
icon_state = "omnilaser"
hitsound = null
damage = 0
+3 -6
View File
@@ -198,13 +198,10 @@ proc/wabbajack(mob/living/M)
var/mob/living/carbon/human/H = new_mob
ready_dna(H)
if(H.dna)
var/list/randspecies = list()
for(var/t in typesof(/datum/species)) // returns a bunch of types
var/datum/species/temp = new t()
randspecies += "[temp.type]"
var/datum/species/new_species = pick(randspecies)
if(H.dna && prob(50))
var/new_species = pick(typesof(/datum/species) - /datum/species)
H.dna.species = new new_species()
H.update_icons()
else
return
@@ -57,7 +57,7 @@
qdel(D)
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
user.changeNext_move(4)
user.changeNext_move(CLICK_CD_RANGE)
if(reagents.has_reagent("sacid"))
message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].")
@@ -217,7 +217,7 @@
qdel(D)
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
user.changeNext_move(4)
user.changeNext_move(CLICK_CD_RANGE)
if(reagents.has_reagent("sacid"))
message_admins("[key_name_admin(user)] fired sulphuric acid from a chem sprayer.")
+1 -2
View File
@@ -45,8 +45,7 @@
trunk.linked = src // link the pipe trunk to self
/obj/machinery/disposal/Destroy()
for(var/atom/movable/AM in contents)
AM.loc = src.loc
eject()
..()
/obj/machinery/disposal/initialize()