Merge pull request #9 from ParadiseSS13/master

Merge From Master
This commit is contained in:
Fox-McCloud
2014-12-05 00:23:48 -05:00
29 changed files with 13298 additions and 13117 deletions
+2 -1
View File
@@ -157,4 +157,5 @@
#define ui_ai_pda_send "SOUTH:6,WEST+10:16"
#define ui_ai_pda_log "SOUTH:6,WEST+11:16"
#define ui_ai_take_picture "SOUTH:6,WEST+12:16"
#define ui_ai_view_images "SOUTH:6,WEST+13:16"
#define ui_ai_view_images "SOUTH:6,WEST+13:16"
#define ui_ai_sensor "SOUTH:6,WEST+14:16"
+12
View File
@@ -129,6 +129,18 @@
using.screen_loc = ui_ai_view_images
using.layer = 20
adding += using
//Medical/Security sensors
using = new /obj/screen()
using.name = "Toggle Sensors"
using.icon = 'icons/mob/screen_ai.dmi'
using.icon_state = "ai_sensor"
using.screen_loc = ui_ai_sensor
using.layer = 20
adding += using
mymob.client.screen += adding + other
return
mymob.client.screen += adding + other
+5
View File
@@ -548,6 +548,11 @@
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
AI.aiCamera.viewpictures()
if("Toggle Sensors")
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
AI.control_hud()
else
return 0
+12 -2
View File
@@ -1731,14 +1731,24 @@ area/security/podbay
name = "\improper Test Room"
icon_state = "storage"
// ENGIE OUTPOST
/area/engiestation
name = "\improper Engineering Outpost"
icon_state = "construction"
/area/engiestation/solars
name = "\improper Engineering Outpost Solars"
icon_state = "panelsP"
//DJSTATION
/area/djstation
name = "\improper Listening Post"
name = "\improper Ruskie DJ Station"
icon_state = "DJ"
/area/djstation/solars
name = "\improper Listening Post Solars"
name = "\improper Ruskie DJ Station Solars"
icon_state = "DJ"
//DERELICT
+2 -2
View File
@@ -113,8 +113,8 @@
spawn_positions = 1
supervisors = "the chief engineer"
selection_color = "#fff5cc"
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_mechanic)
minimal_access = list(access_maint_tunnels, access_emergency_storage, access_mechanic)
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_mechanic, access_external_airlocks)
minimal_access = list(access_maint_tunnels, access_emergency_storage, access_mechanic, access_external_airlocks)
equip(var/mob/living/carbon/human/H)
+2 -2
View File
@@ -268,8 +268,8 @@
spawn_positions = 1
supervisors = "the head of security"
selection_color = "#ffeeee"
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_pilot)
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons, access_pilot)
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_pilot, access_external_airlocks)
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons, access_pilot, access_external_airlocks)
minimal_player_age = 7
equip(var/mob/living/carbon/human/H)
if(!H) return 0
+9 -2
View File
@@ -594,7 +594,14 @@
/obj/machinery/bot/medbot/proc/declare_critical(var/crit_patient)
var/area/location = get_area(src)
for(var/mob/living/carbon/human/human in world)
if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/health) | istype(human.glasses, /obj/item/clothing/glasses/hud/health_advanced) && !human.blinded)
if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/health) || istype(human.glasses, /obj/item/clothing/glasses/hud/health_advanced) && !human.blinded)
if((skin == "bezerk") && (!("syndicate" in human.faction)))
continue
human << "<span class='info'>\icon[human.glasses] Medical emergency! [crit_patient ? "<b>[crit_patient]</b>" : "A patient"] is in critical condition at [location]!"
human << "<span class='info'>\icon[human.glasses] Medical emergency! [crit_patient ? "<b>[crit_patient]</b>" : "A patient"] is in critical condition at [location]!"
for(var/mob/living/silicon/robot in world)
if((robot.z == src.z) && !robot.blinded)
if((skin == "bezerk") && (!("syndicate" in robot.faction)))
continue
for(var/obj/I in robot.contents)
if(istype(I, /obj/item/borg/sight/hud/med))
robot << "<span class='info'>\icon[I] Medical emergency! [crit_patient ? "<b>[crit_patient]</b>" : "A patient"] is in critical condition at [location]!"
+6 -1
View File
@@ -481,4 +481,9 @@ Auto Patrol: []"},
var/area/location = get_area(src)
for(var/mob/living/carbon/human/human in world)
if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security) || istype(human.glasses, /obj/item/clothing/glasses/sunglasses/sechud) && !human.blinded)
human << "<span class='info'>\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat <b>[target]</b> in <b>[location]</b></span>"
human << "<span class='info'>\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat <b>[target]</b> in <b>[location]</b></span>"
for(var/mob/living/silicon/robot in world)
if((robot.z == src.z) && !robot.blinded)
for(var/obj/I in robot.contents)
if(istype(I, /obj/item/borg/sight/hud/sec))
robot << "<span class='info'>\icon[I] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat <b>[target]</b> in <b>[location]</b></span>"
+4 -1
View File
@@ -35,7 +35,10 @@
// Should still work. (/turf/return_air())
var/datum/gas_mixture/environment = T.return_air()
for(var/i=1;i<=stats.len;i++)
rstats[i] = environment.vars[stats[i]]
if(stats[i] == "pressure")
continue
else
rstats[i] = environment.vars[stats[i]]
temps[direction] = rstats
return temps
@@ -103,7 +103,10 @@
New()
..()
new /obj/item/clothing/tie/medal/gold/heroism(src)
new /obj/item/clothing/tie/medal/silver/security(src)
new /obj/item/clothing/tie/medal/silver/valor(src)
new /obj/item/clothing/tie/medal/nobel_science(src)
new /obj/item/clothing/tie/medal/bronze_heart(src)
new /obj/item/clothing/tie/medal/conduct(src)
new /obj/item/clothing/tie/medal/conduct(src)
+23
View File
@@ -539,6 +539,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
"soviet admiral",
"tunnel clown",
"masked killer",
"dark lord",
"assassin",
"death commando",
"syndicate commando",
@@ -744,6 +745,28 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
carried_item.add_blood(M)//Oh yes, there will be blood...
if("dark lord")
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_hand)
var/obj/item/clothing/head/chaplain_hood/hood = new(M)
hood.name = "dark lord hood"
M.equip_to_slot_or_del(hood, slot_head)
var/obj/item/clothing/suit/chaplain_hoodie/robe = new(M)
robe.name = "dark lord robes"
M.equip_to_slot_or_del(robe, slot_wear_suit)
var/obj/item/weapon/card/id/syndicate/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.assignment = "Dark Lord"
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
if("assassin")
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
+73 -43
View File
@@ -2,85 +2,115 @@
/obj/item/weapon/coin
icon = 'icons/obj/items.dmi'
name = "Coin"
icon_state = "coin"
flags = FPRINT | TABLEPASS| CONDUCT
force = 0.0
throwforce = 0.0
name = "coin"
icon_state = "coin__heads"
flags = CONDUCT
force = 1
throwforce = 2
w_class = 1.0
var/string_attached
var/material="iron" // Ore ID, used with coinbags.
var/credits = 0 // How many credits is this coin worth?
var/list/sideslist = list("heads","tails")
var/cmineral = null
var/cooldown = 0
var/credits = 10
/obj/item/weapon/coin/New()
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
icon_state = "coin_[cmineral]_heads"
if(cmineral)
name = "[cmineral] coin"
/obj/item/weapon/coin/gold
name = "Gold coin"
icon_state = "coin_gold"
credits = 10
cmineral = "gold"
icon_state = "coin_gold_heads"
credits = 160
/obj/item/weapon/coin/silver
name = "Silver coin"
icon_state = "coin_silver"
credits = 5
cmineral = "silver"
icon_state = "coin_silver_heads"
credits = 40
/obj/item/weapon/coin/diamond
name = "Diamond coin"
icon_state = "coin_diamond"
credits = 25
cmineral = "diamond"
icon_state = "coin_diamond_heads"
credits = 120
/obj/item/weapon/coin/iron
name = "Iron coin"
icon_state = "coin_iron"
credits = 1
cmineral = "iron"
icon_state = "coin_iron_heads"
credits = 20
/obj/item/weapon/coin/plasma
name = "Solid plasma coin"
icon_state = "coin_plasma"
credits = 5
cmineral = "plasma"
icon_state = "coin_plasma_heads"
credits = 80
/obj/item/weapon/coin/uranium
name = "Uranium coin"
icon_state = "coin_uranium"
credits = 25
cmineral = "uranium"
icon_state = "coin_uranium_heads"
credits = 160
/obj/item/weapon/coin/clown
name = "Bananaium coin"
icon_state = "coin_clown"
credits = 1000
cmineral = "bananium"
icon_state = "coin_bananium_heads"
credits = 600 //makes the clown cri
/obj/item/weapon/coin/adamantine
cmineral = "adamantine"
icon_state = "coin_adamantine_heads"
credits = 400
/obj/item/weapon/coin/mythril
cmineral = "mythril"
icon_state = "coin_mythril_heads"
credits = 400
/obj/item/weapon/coin/twoheaded
cmineral = "iron"
icon_state = "coin_iron_heads"
desc = "Hey, this coin's the same on both sides!"
sideslist = list("heads")
credits = 20
/obj/item/weapon/coin/platinum
name = "platinum coin"
icon_state = "coin_adamantine"
/obj/item/weapon/coin/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/stack/cable_coil) )
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CC = W
if(string_attached)
user << "\blue There already is a string attached to this coin."
user << "<span class='notice'>There already is a string attached to this coin.</span>"
return
if(CC.amount <= 0)
user << "\blue This cable coil appears to be empty."
del(CC)
if (CC.use(1))
overlays += image('icons/obj/items.dmi',"coin_string_overlay")
string_attached = 1
user << "<span class='notice'>You attach a string to the coin.</span>"
else
user << "<span class='warning'>You need one length of cable to attach a string to the coin.</span>"
return
overlays += image('icons/obj/items.dmi',"coin_string_overlay")
string_attached = 1
user << "\blue You attach a string to the coin."
CC.use(1)
else if(istype(W,/obj/item/weapon/wirecutters) )
else if(istype(W,/obj/item/weapon/wirecutters))
if(!string_attached)
..()
return
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
CC.amount = 1
// CC.updateicon()
CC.update_icon()
overlays = list()
string_attached = null
user << "\blue You detach the string from the coin."
user << "<span class='notice'>You detach the string from the coin.</span>"
else ..()
/obj/item/weapon/coin/attack_self(mob/user as mob)
if(cooldown < world.time - 15)
var/coinflip = pick(sideslist)
cooldown = world.time
flick("coin_[cmineral]_flip", src)
icon_state = "coin_[cmineral]_[coinflip]"
playsound(user.loc, 'sound/items/coinflip.ogg', 50, 1)
if(do_after(user, 15))
user.visible_message("<span class='notice'>[user] has flipped [src]. It lands on [coinflip].</span>", \
"<span class='notice'>You flip [src]. It lands on [coinflip].</span>", \
"<span class='notice'>You hear the clattering of loose change.</span>")
@@ -478,9 +478,26 @@
var/mob/living/silicon/robot/R = M
switch(hudtype)
if("security")
return istype(R.module_state_1, /obj/item/borg/sight/hud/sec) || istype(R.module_state_2, /obj/item/borg/sight/hud/sec) || istype(R.module_state_3, /obj/item/borg/sight/hud/sec)
for(var/obj/I in R.contents)
if(istype(I, /obj/item/borg/sight/hud/sec))
return 1
if("medical")
return istype(R.module_state_1, /obj/item/borg/sight/hud/med) || istype(R.module_state_2, /obj/item/borg/sight/hud/med) || istype(R.module_state_3, /obj/item/borg/sight/hud/med)
for(var/obj/I in R.contents)
if(istype(I, /obj/item/borg/sight/hud/med))
return 1
else
return 0
else if(istype(M, /mob/living/silicon/ai))
var/mob/living/silicon/ai/A = M
switch(hudtype)
if("security")
for(var/obj/I in A.contents)
if(istype(I, /obj/item/borg/sight/hud/sec))
return 1
if("medical")
for(var/obj/I in A.contents)
if(istype(I, /obj/item/borg/sight/hud/med))
return 1
else
return 0
else
+29 -3
View File
@@ -58,6 +58,9 @@ var/list/ai_list = list()
var/obj/machinery/bot/Bot
var/turf/waypoint //Holds the turf of the currently selected waypoint.
var/waypoint_mode = 0 //Waypoint mode is for selecting a turf via clicking.
var/obj/item/borg/sight/hud/sec/sechud = null
var/obj/item/borg/sight/hud/med/healthhud = null
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
var/list/possibleNames = ai_names
@@ -99,11 +102,13 @@ var/list/ai_list = list()
aiRadio.myAi = src
aiCamera = new/obj/item/device/camera/siliconcam/ai_camera(src)
if (istype(loc, /turf))
verbs.Add(/mob/living/silicon/ai/proc/ai_network_change, \
/mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/botcall, /mob/living/silicon/ai/proc/control_integrated_radio)
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/botcall, /mob/living/silicon/ai/proc/control_integrated_radio, /mob/living/silicon/ai/proc/control_hud)
if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside.
@@ -118,7 +123,7 @@ var/list/ai_list = list()
verbs.Remove(,/mob/living/silicon/ai/proc/ai_call_shuttle,/mob/living/silicon/ai/proc/ai_camera_track, \
/mob/living/silicon/ai/proc/ai_camera_list, /mob/living/silicon/ai/proc/ai_network_change, \
/mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \
/mob/living/silicon/ai/proc/toggle_camera_light,/mob/living/silicon/ai/verb/pick_icon)
/mob/living/silicon/ai/proc/toggle_camera_light,/mob/living/silicon/ai/verb/pick_icon,/mob/living/silicon/ai/proc/control_hud)
laws = new /datum/ai_laws/alienmov
else
B.brainmob.mind.transfer_to(src)
@@ -808,6 +813,10 @@ var/list/ai_list = list()
//Toggles the luminosity and applies it by re-entereing the camera.
/mob/living/silicon/ai/proc/toggle_camera_light()
set name = "Toggle Camera Lights"
set desc = "Toggles the lights on the cameras throughout the station."
set category = "AI Commands"
if(stat != CONSCIOUS)
return
@@ -820,8 +829,25 @@ var/list/ai_list = list()
else
lightNearbyCamera()
/mob/living/silicon/ai/proc/control_hud()
set name = "Toggle Sensors"
set desc = "Toggles your sensors to display security records, medical records or nothing."
set category = "AI Commands"
if(stat != 0)
return
var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical")
for(var/obj/item/borg/sight/hud/H in contents)
del(H)
switch(hud)
if("Security")
sechud = new/obj/item/borg/sight/hud/sec(src)
if("Medical")
healthhud = new/obj/item/borg/sight/hud/med(src)
else
return
// Handled camera lighting, when toggled.
// It will get the nearest camera from the eyeobj, lighting it.
+12 -1
View File
@@ -1,4 +1,7 @@
/mob/living/silicon/ai/Life()
if(client)
handle_regular_hud_updates()
if (src.stat == 2)
return
else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist
@@ -9,7 +12,7 @@
src.cameraFollow = null
src.reset_view(null)
src.unset_machine()
src.updatehealth()
if (src.malfhack)
@@ -182,3 +185,11 @@
health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss()
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
/mob/living/silicon/ai/proc/handle_regular_hud_updates()
for(var/image/hud in client.images) //COPIED FROM the human handle_regular_hud_updates() proc
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
client.images.Remove(hud)
var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src)
if(hud && hud.hud) hud.hud.process_hud(src)
@@ -73,6 +73,9 @@
var/base_icon = ""
var/crisis = 0
var/hiddenborg = 0
var/obj/item/borg/sight/hud/sec/sechud = null
var/obj/item/borg/sight/hud/med/healthhud = null
/mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0)
spark_system = new /datum/effect/effect/system/spark_spread()
@@ -456,6 +459,25 @@
else
C.toggled = 1
src << "\red You enable [C.name]."
/mob/living/silicon/robot/verb/control_hud()
set name = "Toggle Sensors"
set desc = "Toggles your sensors to display security records, medical records or nothing."
set category = "Robot Commands"
if(stat != 0)
return
var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical")
for(var/obj/item/borg/sight/hud/H in contents)
del(H)
switch(hud)
if("Security")
sechud = new/obj/item/borg/sight/hud/sec(src)
if("Medical")
healthhud = new/obj/item/borg/sight/hud/med(src)
else
return
/mob/living/silicon/robot/blob_act()
if (stat != 2)
@@ -120,7 +120,6 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
src.modules += new /obj/item/roller_holder(src)
@@ -230,7 +229,6 @@
New()
src.modules += new /obj/item/device/flashlight/seclite(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/borg/sight/hud/sec(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
+1 -1
View File
@@ -34,7 +34,7 @@
/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo))
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle))
user << "<span class='notice'>You put [P] in [src].</span>"
user.drop_item()
P.loc = src
+3 -1
View File
@@ -31,7 +31,7 @@
return
/obj/item/weapon/folder/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo))
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/weapon/paper_bundle))
user.drop_item()
W.loc = src
user << "<span class='notice'>You put the [W] into \the [src].</span>"
@@ -49,6 +49,8 @@
dat += "<A href='?src=\ref[src];remove=\ref[P]'>Remove</A> - <A href='?src=\ref[src];read=\ref[P]'>[P.name]</A><BR>"
for(var/obj/item/weapon/photo/Ph in src)
dat += "<A href='?src=\ref[src];remove=\ref[Ph]'>Remove</A> - <A href='?src=\ref[src];look=\ref[Ph]'>[Ph.name]</A><BR>"
for(var/obj/item/weapon/paper_bundle/Pa in src)
dat += "<A href='?src=\ref[src];remove=\ref[Pa]'>Remove</A> - <A href='?src=\ref[src];look=\ref[Pa]'>[Pa.name]</A><BR>"
user << browse(dat, "window=folder")
onclose(user, "folder")
add_fingerprint(usr)
+1 -1
View File
@@ -86,7 +86,7 @@
if((M_CLUMSY in usr.mutations) && prob(50))
usr << "<span class='warning'>You cut yourself on the paper.</span>"
return
var/n_name = copytext(sanitize(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text), 1, MAX_NAME_LEN)
var/n_name = copytext(sanitize(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text), 1, MAX_MESSAGE_LEN)
if((loc == usr && usr.stat == 0))
name = "[(n_name ? text("[n_name]") : initial(name))]"
if(name != "paper")
+1 -1
View File
@@ -189,7 +189,7 @@
set category = "Object"
set src in usr
var/n_name = copytext(sanitize(input(usr, "What would you like to label the bundle?", "Bundle Labelling", null) as text), 1, MAX_NAME_LEN)
var/n_name = copytext(sanitize(input(usr, "What would you like to label the bundle?", "Bundle Labelling", null) as text), 1, MAX_MESSAGE_LEN)
if((loc == usr && usr.stat == 0))
name = "[(n_name ? text("[n_name]") : "paper")]"
add_fingerprint(usr)
+1 -1
View File
@@ -64,7 +64,7 @@
set category = "Object"
set src in usr
var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN)
var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_MESSAGE_LEN)
//loc.loc check is for making possible renaming photos in clipboards
if(( (loc == usr || (loc.loc && loc.loc == usr)) && usr.stat == 0))
name = "[(n_name ? text("[n_name]") : "photo")]"
+23 -18
View File
@@ -29,33 +29,38 @@ obj/item/weapon/gun/energy/laser/retro
var/charge_tick = 0
New()
..()
processing_objects.Add(src)
/obj/item/weapon/gun/energy/laser/captain/New()
..()
processing_objects.Add(src)
/obj/item/weapon/gun/energy/laser/captain/Destroy()
processing_objects.Remove(src)
..()
/obj/item/weapon/gun/energy/laser/captain/process()
charge_tick++
if(charge_tick < 4)
return 0
charge_tick = 0
if(!power_supply)
return 0
power_supply.give(1000)
update_icon()
return 1
Destroy()
processing_objects.Remove(src)
..()
process()
charge_tick++
if(charge_tick < 4) return 0
charge_tick = 0
if(!power_supply) return 0
power_supply.give(1000)
update_icon()
return 1
/obj/item/weapon/gun/energy/laser/cyborg
desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?"
/obj/item/weapon/gun/energy/laser/cyborg/process()
return 1
/obj/item/weapon/gun/energy/laser/cyborg/process_chambered()
if(in_chamber)
return 1
if(isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
if(R && R.cell && R.cell.charge >= 500)
R.cell.use(500)
in_chamber = new/obj/item/projectile/beam(src)
return 1
+21 -20
View File
@@ -28,21 +28,18 @@
..()
/obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
charge_tick++
if(charge_tick < recharge_time) return 0
charge_tick = 0
if(!power_supply) return 0 //sanity
if(power_supply.charge >= power_supply.maxcharge) return 0 // check if we actually need to recharge
return 1
/obj/item/weapon/gun/energy/taser/cyborg/process_chambered()
if(in_chamber)
return 1
if(isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
R.cell.use(charge_cost) //Take power from the borg...
power_supply.give(charge_cost) //... to recharge the shot
update_icon()
return 1
if(R && R.cell && R.cell.charge >= 250)
R.cell.use(250)
in_chamber = new /obj/item/projectile/energy/electrode(src)
return 1
return 0
/obj/item/weapon/gun/energy/stunrevolver
@@ -80,26 +77,30 @@
/obj/item/weapon/gun/energy/crossbow/process()
charge_tick++
if(charge_tick < 4) return 0
if(charge_tick < 4)
return 0
charge_tick = 0
if(!power_supply) return 0
if(!power_supply)
return 0
power_supply.give(1000)
return 1
/obj/item/weapon/gun/energy/crossbow/update_icon()
return
/obj/item/weapon/gun/energy/crossbow/cyborg/process()
..()
return
/obj/item/weapon/gun/energy/crossbow/cyborg
desc = "An energy-based crossbow that draws power from the cyborg's internal energy cell directly."
/obj/item/weapon/gun/energy/crossbow/cyborg/process()
return 1
/obj/item/weapon/gun/energy/crossbow/cyborg/process_chambered()
if(in_chamber)
return 1
if(isrobot(src.loc))
var/mob/living/silicon/robot/R = src.loc
if(R && R.cell)
R.cell.use(100)
if(R && R.cell && R.cell.charge >= 250)
R.cell.use(250)
in_chamber = new /obj/item/projectile/energy/bolt(src)
return 1
return 0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 76 KiB

+13012 -13012
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.