mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into goodbyedeadspace
Conflicts: code/game/mecha/mecha.dm
This commit is contained in:
@@ -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
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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:"
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -486,8 +486,6 @@
|
||||
qdel(G)
|
||||
|
||||
/obj/machinery/dna_scannernew/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
toggle_open(user)
|
||||
add_fingerprint(user)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,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,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
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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,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"
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'> [active1.fields["sex"]] </A></td></tr>"
|
||||
dat += "<tr><td>Age:</td><td><A href='?src=\ref[src];field=age'> [active1.fields["age"]] </A></td></tr>"
|
||||
dat += "<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];field=fingerprint'> [active1.fields["fingerprint"]] </A></td></tr>"
|
||||
dat += "<tr><td>Physical Status:</td><td><A href='?src=\ref[src];field=p_stat'> [active1.fields["p_stat"]] </A></td></tr>"
|
||||
dat += "<tr><td>Mental Status:</td><td><A href='?src=\ref[src];field=m_stat'> [active1.fields["m_stat"]] </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'> [active2.fields["blood_type"]] </A></td></tr>"
|
||||
dat += "<tr><td>DNA:</td><td><A href='?src=\ref[src];field=b_dna'> [active2.fields["b_dna"]] </A></td></tr>"
|
||||
dat += "<tr><td><br>Minor Disabilities:</td><td><br><A href='?src=\ref[src];field=mi_dis'> [active2.fields["mi_dis"]] </A></td></tr>"
|
||||
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=mi_dis_d'> [active2.fields["mi_dis_d"]] </A></td></tr>"
|
||||
dat += "<tr><td><br>Major Disabilities:</td><td><br><A href='?src=\ref[src];field=ma_dis'> [active2.fields["ma_dis"]] </A></td></tr>"
|
||||
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=ma_dis_d'> [active2.fields["ma_dis_d"]] </A></td></tr>"
|
||||
dat += "<tr><td><br>Allergies:</td><td><br><A href='?src=\ref[src];field=alg'> [active2.fields["alg"]] </A></td></tr>"
|
||||
dat += "<tr><td>Details:</td><td><A href='?src=\ref[src];field=alg_d'> [active2.fields["alg_d"]] </A></td></tr>"
|
||||
dat += "<tr><td><br>Current Diseases:</td><td><br><A href='?src=\ref[src];field=cdi'> [active2.fields["cdi"]] </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'> [active2.fields["cdi_d"]] </A></td></tr>"
|
||||
dat += "<tr><td><br>Important Notes:</td><td><br><A href='?src=\ref[src];field=notes'> [active2.fields["notes"]] </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"])
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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> </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]↳<A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += " <A href='?src=\ref[src];internal=[slot_back]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
|
||||
dat += "<BR>"
|
||||
dat += "</td></tr><tr><td> </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> </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]↳<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]↳<A href='?src=\ref[src];internal=[slot_s_store]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += "<tr><td> ↳<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 += " <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> ↳<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]↳<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]↳<A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += "<BR>[TAB]↳<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]↳<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> ↳<B>Pockets:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>ID:</B></font></td></tr>"
|
||||
dat += "<tr><td><font color=grey> ↳<B>Belt:</B></font></td></tr>"
|
||||
else
|
||||
dat += "<tr><td> ↳<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 += " <A href='?src=\ref[src];internal=[slot_belt]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
dat += "</td></tr>"
|
||||
dat += "<tr><td> ↳<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 += " <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> ↳<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
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
return 0
|
||||
if(i > 1)
|
||||
newshot()
|
||||
user.changeNext_move(4)
|
||||
user.changeNext_move(CLICK_CD_RANGE)
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
|
||||
/obj/item/projectile/lasertag
|
||||
name = "lasertag beam"
|
||||
name = "laser tag beam"
|
||||
icon_state = "omnilaser"
|
||||
hitsound = null
|
||||
damage = 0
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user