mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 20:13:45 +01:00
Merge branch 'master' of github.com:Baystation12/Baystation12 into TGUpdates
Conflicts: code/game/objects/items/weapons/cigs_lighters.dm code/game/objects/items/weapons/grenades.dm code/game/objects/items/weapons/implants/implant.dm code/game/objects/radio/headset.dm code/game/objects/radio/radio.dm code/modules/assembly/assembly.dm code/modules/assembly/holder.dm code/modules/clothing/glasses.dm code/modules/mob/living/silicon/robot/robot_modules.dm code/modules/paperwork/paper.dm code/modules/research/circuitprinter.dm code/modules/research/protolathe.dm icons/mob/suit.dmi
This commit is contained in:
@@ -167,7 +167,7 @@ obj/machinery/computer/forensic_scanning
|
||||
I.loc = src
|
||||
else
|
||||
usr << "Invalid Object Rejected."
|
||||
if("card")
|
||||
if("card") //Processing a fingerprint card.
|
||||
var/mob/M = usr
|
||||
var/obj/item/I = M.equipped()
|
||||
if(!(I && istype(I,/obj/item/weapon/f_card)))
|
||||
@@ -187,7 +187,7 @@ obj/machinery/computer/forensic_scanning
|
||||
process_card()
|
||||
else
|
||||
usr << "\red Invalid Object Rejected."
|
||||
if("database")
|
||||
if("database") //Viewing all records in each database
|
||||
canclear = 1
|
||||
if(href_list["delete_record"])
|
||||
delete_dossier(href_list["delete_record"])
|
||||
@@ -212,7 +212,7 @@ obj/machinery/computer/forensic_scanning
|
||||
for(var/atom in misc)
|
||||
var/list/data_entry = misc[atom]
|
||||
temp += "<a href='?src=\ref[src];operation=auxiliary;identifier=[atom]'>{[data_entry[3]]}</a><br>"
|
||||
if("record")
|
||||
if("record") //Viewing a record from the "files" database.
|
||||
canclear = 0
|
||||
if(files)
|
||||
temp = "<b>Criminal Evidence Database</b><br><br>"
|
||||
@@ -246,7 +246,7 @@ obj/machinery/computer/forensic_scanning
|
||||
else
|
||||
temp = "ERROR. Database not found!<br>"
|
||||
temp += "<br><a href='?src=\ref[src];operation=database'>{Return}</a>"
|
||||
if("databaseprint")
|
||||
if("databaseprint") //Printing from the "files" database.
|
||||
if(files)
|
||||
var/obj/item/weapon/paper/P = new(loc)
|
||||
P.name = "Database File (Dossier [files.Find(href_list["identifier"])])"
|
||||
@@ -275,12 +275,11 @@ obj/machinery/computer/forensic_scanning
|
||||
var/list/blood = outputs[3]
|
||||
if(blood && blood.len)
|
||||
P.info += " <b>Blood:</b><br>"
|
||||
for(var/j = 1, j <= blood.len, j++)
|
||||
var/list/templist2 = blood[j]
|
||||
P.info += " Type: [templist2[2]], DNA: [templist2[1]]<br>"
|
||||
for(var/named in blood)
|
||||
P.info += " Type: [blood[named]], DNA: [named]<br>"
|
||||
else
|
||||
usr << "ERROR. Database not found!<br>"
|
||||
if("auxiliary")
|
||||
if("auxiliary") //Viewing a record from the "misc" database.
|
||||
canclear = 0
|
||||
if(misc)
|
||||
temp = "<b>Auxiliary Evidence Database</b><br><br>"
|
||||
@@ -302,7 +301,7 @@ obj/machinery/computer/forensic_scanning
|
||||
else
|
||||
temp = "ERROR. Database not found!<br>"
|
||||
temp += "<br><a href='?src=\ref[src];operation=database'>{Return}</a>"
|
||||
if("auxiliaryprint")
|
||||
if("auxiliaryprint") //Printing from the "misc" database.
|
||||
if(misc)
|
||||
var/obj/item/weapon/paper/P = new(loc)
|
||||
var/list/outputs = misc[href_list["identifier"]]
|
||||
@@ -403,7 +402,7 @@ obj/machinery/computer/forensic_scanning
|
||||
temp = "Scan Failed: No Object"
|
||||
|
||||
|
||||
if("print")
|
||||
if("print") //Printing scan data
|
||||
if(scan_data)
|
||||
temp = "Scan Data Printed."
|
||||
var/obj/item/weapon/paper/P = new(loc)
|
||||
@@ -416,7 +415,7 @@ obj/machinery/computer/forensic_scanning
|
||||
scan_data = ""
|
||||
if("cancel")
|
||||
scan_process = 0
|
||||
if("add")
|
||||
if("add") //Adding an object (Manually) to the database.
|
||||
if(scanning)
|
||||
add_data(scanning)
|
||||
else
|
||||
@@ -541,7 +540,7 @@ obj/machinery/computer/forensic_scanning
|
||||
if(master)
|
||||
master[1] = stringmerge(master[1],new_print)
|
||||
else
|
||||
CRASH("Fucking hell. Something went wrong, and it tried to update a null print or something. Tell SkyMarshal")
|
||||
CRASH("Fucking hell. Something went wrong, and it tried to update a null print or something. Tell SkyMarshal (and give him this call stack)")
|
||||
return
|
||||
|
||||
proc/process_card() //Same as above, but for fingerprint cards
|
||||
@@ -772,7 +771,7 @@ proc/blood_incompatible(donor,receiver)
|
||||
..()
|
||||
|
||||
afterattack(atom/A as obj|turf|area, mob/user as mob)
|
||||
if(istype(A))
|
||||
if(istype(A) && src in user)
|
||||
user.visible_message("[user] starts to wipe down [A] with [src]!")
|
||||
if(do_after(user,30))
|
||||
user.visible_message("[user] finishes wiping off the [A]!")
|
||||
@@ -780,7 +779,7 @@ proc/blood_incompatible(donor,receiver)
|
||||
return
|
||||
|
||||
examine()
|
||||
if (!( usr ))
|
||||
if (!usr)
|
||||
return
|
||||
usr << "That's \a [src]."
|
||||
usr << desc
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
//CONTAINS:
|
||||
//Evidence bags and stuff
|
||||
///////////
|
||||
//Shamelessly ripped from Mini's old code.
|
||||
|
||||
/obj/item/weapon/evidencebag
|
||||
name = "evidence bag"
|
||||
desc = "An empty evidence bag."
|
||||
@@ -10,34 +8,43 @@
|
||||
icon_state = "evidenceobj"
|
||||
w_class = 1
|
||||
|
||||
/* buggy and stuff
|
||||
/obj/item/weapon/evidencebag/attackby(obj/item/weapon/O, mob/user as mob)
|
||||
return src.afterattack(O, user)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/evidencebag/afterattack(obj/item/O, mob/user as mob)
|
||||
if(!in_range(O,user))
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/weapon/storage) && O in user)
|
||||
return ..()
|
||||
|
||||
if(!(O && istype(O)) || O.anchored == 1)
|
||||
user << "You can't put that inside the [src]!"
|
||||
user << "You can't put that inside \the [src]!"
|
||||
return ..()
|
||||
if(O in user)
|
||||
|
||||
if(istype(O, /obj/item/weapon/evidencebag))
|
||||
user << "You find putting an evidence bag in another evidence bag to be slightly absurd."
|
||||
return
|
||||
|
||||
if(O in user && (user.l_hand != O && user.r_hand != O)) //If it is in their inventory, but not in their hands, don't grab it off of them.
|
||||
user << "You are wearing that."
|
||||
return
|
||||
if(src.contents.len > 0)
|
||||
|
||||
if(contents.len)
|
||||
user << "The [src] already has something inside it."
|
||||
return ..()
|
||||
|
||||
if(istype(O.loc,/obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/U = O.loc
|
||||
user.client.screen -= O
|
||||
U.contents.Remove(O)
|
||||
|
||||
if(istype(O.loc,/obj/item/clothing/suit/storage/))
|
||||
var/obj/item/clothing/suit/storage/U = O.loc
|
||||
user.client.screen -= O
|
||||
U.contents.Remove(O)
|
||||
user << "You put the [O] inside the [src]."
|
||||
|
||||
user.visible_message("\The [user] puts \a [O] into \a [src]", "You put \the [O] inside \the [src].",\
|
||||
"You hear a rustle as someone puts something into a plastic bag.")
|
||||
icon_state = "evidence"
|
||||
src.overlays += O
|
||||
overlays += O
|
||||
desc = "An evidence bag containing \a [O]. [O.desc]"
|
||||
O.loc = src
|
||||
w_class = O.w_class
|
||||
@@ -45,17 +52,19 @@
|
||||
|
||||
|
||||
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
|
||||
if (src.contents.len > 0)
|
||||
var/obj/item/I = src.contents[1]
|
||||
user << "You take the [I] out of the [src]."
|
||||
src.overlays -= I
|
||||
I.loc = get_turf(user.loc)
|
||||
if (contents.len)
|
||||
var/obj/item/I = contents[1]
|
||||
user.visible_message("\The [user] takes \a [I] out of \a [src]", "You take \the [I] out of \the [src].",\
|
||||
"You hear someone rustle around in a plastic bag, and remove something.")
|
||||
overlays -= I
|
||||
user.put_in_hands(I)
|
||||
w_class = 1
|
||||
src.icon_state = "evidenceobj"
|
||||
icon_state = "evidenceobj"
|
||||
desc = "An empty evidence bag."
|
||||
|
||||
else
|
||||
user << "[src] is empty."
|
||||
src.icon_state = "evidenceobj"
|
||||
user << "\The [src] is empty."
|
||||
icon_state = "evidenceobj"
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/box/evidence
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
var
|
||||
jobban_runonce // Updates legacy bans with new info
|
||||
jobban_keylist[0] //to store the keys & ranks
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
var/jobban_runonce // Updates legacy bans with new info
|
||||
var/jobban_keylist[0] //to store the keys & ranks
|
||||
|
||||
/proc/jobban_fullban(mob/M, rank, reason)
|
||||
if (!M || !M.key) return
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
|
||||
/proc/isassembly(O)
|
||||
if(istype(O, /obj/item/device/assembly))
|
||||
@@ -89,7 +91,7 @@
|
||||
cooldown--
|
||||
if(cooldown <= 0) return 0
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
process_cooldown()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -101,7 +103,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
pulse(var/radio = 0)
|
||||
proc/pulse(var/radio = 0)
|
||||
if(holder && (wires & WIRE_PULSE))
|
||||
holder.process_activation(src, 1, 0)
|
||||
if(holder && (wires & WIRE_PULSE_SPECIAL))
|
||||
@@ -205,7 +207,6 @@ Desc: If true is an object that can be attached to an assembly holder but is a s
|
||||
|
||||
proc
|
||||
Activate()//Called when this assembly is pulsed by another one
|
||||
Process_cooldown()//Call this via spawn(10) to have it count down the cooldown var
|
||||
Attach_Holder(var/obj/H, var/mob/user)//Called when an assembly holder attempts to attach, sets src's loc in here
|
||||
|
||||
|
||||
@@ -233,4 +234,4 @@ Desc: If true is an object that can be attached to an assembly holder but is a s
|
||||
//Remember to have it set its loc somewhere in here
|
||||
|
||||
|
||||
*/
|
||||
*/
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/assembly/infra
|
||||
name = "Infrared Beam"
|
||||
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
|
||||
@@ -11,10 +13,9 @@
|
||||
small_icon_state_left = "infrared_left"
|
||||
small_icon_state_right = "infrared_right"
|
||||
|
||||
var
|
||||
scanning = 0
|
||||
visible = 0
|
||||
obj/effect/beam/i_beam/first = null
|
||||
var/scanning = 0
|
||||
var/visible = 0
|
||||
var/obj/effect/beam/i_beam/first = null
|
||||
|
||||
proc
|
||||
trigger_beam()
|
||||
@@ -271,4 +272,4 @@
|
||||
/obj/effect/beam/i_beam/Del()
|
||||
del(src.next)
|
||||
..()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/assembly/prox_sensor
|
||||
name = "proximity sensor"
|
||||
desc = "Used for scanning and alerting when someone enters a certain proximity."
|
||||
@@ -11,10 +13,9 @@
|
||||
small_icon_state_left = "prox_left"
|
||||
small_icon_state_right = "prox_right"
|
||||
|
||||
var
|
||||
scanning = 0
|
||||
timing = 0
|
||||
time = 10
|
||||
var/scanning = 0
|
||||
var/timing = 0
|
||||
var/time = 10
|
||||
|
||||
proc
|
||||
toggle_scan()
|
||||
@@ -153,4 +154,4 @@
|
||||
attack_self(usr)
|
||||
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/assembly/signaler
|
||||
name = "Remote Signaling Device"
|
||||
desc = "Used to remotely activate devices."
|
||||
@@ -13,13 +15,12 @@
|
||||
small_icon_state_left = "signaller_left"
|
||||
small_icon_state_right = "signaller_right"
|
||||
|
||||
var
|
||||
code = 30
|
||||
frequency = 1457
|
||||
delay = 0
|
||||
airlock_wire = null
|
||||
datum/radio_frequency/radio_connection
|
||||
deadman = 0
|
||||
var/code = 30
|
||||
var/frequency = 1457
|
||||
var/delay = 0
|
||||
var/airlock_wire = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/deadman = 0
|
||||
|
||||
proc
|
||||
signal()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/assembly/timer
|
||||
name = "timer"
|
||||
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
|
||||
@@ -11,9 +13,8 @@
|
||||
small_icon_state_left = "timer_left"
|
||||
small_icon_state_right = "timer_right"
|
||||
|
||||
var
|
||||
timing = 0
|
||||
time = 10
|
||||
var/timing = 0
|
||||
var/time = 10
|
||||
|
||||
proc
|
||||
timer_end()
|
||||
@@ -114,4 +115,4 @@
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
var/const
|
||||
TOUCH = 1
|
||||
INGEST = 2
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
var/const/TOUCH = 1
|
||||
var/const/INGEST = 2
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
#define SOLID 1
|
||||
#define LIQUID 2
|
||||
#define GAS 3
|
||||
@@ -279,7 +281,7 @@ datum
|
||||
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
|
||||
lowertemp.react()
|
||||
T.assume_air(lowertemp)
|
||||
T.apply_fire_protection()
|
||||
//T.apply_fire_protection()
|
||||
del(hotspot)
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
|
||||
@@ -2654,14 +2656,13 @@ datum
|
||||
reagent_state = LIQUID
|
||||
nutriment_factor = 0 //So alcohol can fill you up! If they want to.
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
var
|
||||
dizzy_adj = 3
|
||||
slurr_adj = 3
|
||||
confused_adj = 2
|
||||
slur_start = 65 //amount absorbed after which mob starts slurring
|
||||
confused_start = 130 //amount absorbed after which mob starts confusing directions
|
||||
blur_start = 260 //amount absorbed after which mob starts getting blurred vision
|
||||
pass_out = 325 //amount absorbed after which mob starts passing out
|
||||
var/dizzy_adj = 3
|
||||
var/slurr_adj = 3
|
||||
var/confused_adj = 2
|
||||
var/slur_start = 65 //amount absorbed after which mob starts slurring
|
||||
var/confused_start = 130 //amount absorbed after which mob starts confusing directions
|
||||
var/blur_start = 260 //amount absorbed after which mob starts getting blurred vision
|
||||
var/pass_out = 325 //amount absorbed after which mob starts passing out
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
|
||||
@@ -1513,6 +1513,9 @@
|
||||
if ("tray")
|
||||
var/obj/item/trash/tray/T = new /obj/item/trash/tray/( M )
|
||||
M.put_in_hand(T)
|
||||
if ("liquidfood")
|
||||
var/obj/item/trash/liquidfood/T = new /obj/item/trash/liquidfood/( M )
|
||||
M.put_in_hand(T)
|
||||
return
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -3713,7 +3716,7 @@
|
||||
desc = "You can't really tell what this is."
|
||||
else
|
||||
icon_state = "glass_empty"
|
||||
name = "Drinking glass"
|
||||
name = "drinking glass"
|
||||
desc = "Your standard drinking glass"
|
||||
return
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/clothing/glasses
|
||||
name = "glasses"
|
||||
icon = 'glasses.dmi'
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/clothing/glasses/hud
|
||||
name = "HUD"
|
||||
desc = "A heads-up display that provides important info in (almost) real time."
|
||||
flags = null //doesn't protect eyes because it's a monocle, duh
|
||||
origin_tech = "magnets=3;biotech=2"
|
||||
var
|
||||
list/icon/current = list() //the current hud icons
|
||||
var/list/icon/current = list() //the current hud icons
|
||||
|
||||
proc
|
||||
process_hud(var/mob/M) return
|
||||
@@ -56,7 +57,6 @@
|
||||
if(!M) return
|
||||
if(!M.client) return
|
||||
var/client/C = M.client
|
||||
var/icon/tempHud = 'hud.dmi'
|
||||
for(var/mob/living/carbon/human/patient in view(M))
|
||||
var/foundVirus = 0
|
||||
for(var/datum/disease/D in patient.viruses)
|
||||
@@ -66,15 +66,17 @@
|
||||
// jesus fuck, no, don't display vira by just looking at them
|
||||
/*if(patient.virus2)
|
||||
foundVirus++*/
|
||||
C.images += image(tempHud,patient,"hud[RoundHealth(patient.health)]")
|
||||
patient.health_img.icon_state = "hud[RoundHealth(patient.health)]"
|
||||
C.images += patient.health_img
|
||||
if(patient.stat == 2)
|
||||
C.images += image(tempHud,patient,"huddead")
|
||||
patient.med_img.icon_state = "huddead"
|
||||
else if(patient.alien_egg_flag)
|
||||
C.images += image(tempHud,patient,"hudxeno")
|
||||
patient.med_img.icon_state = "hudxeno"
|
||||
else if(foundVirus)
|
||||
C.images += image(tempHud,patient,"hudill")
|
||||
patient.med_img.icon_state = "hudill"
|
||||
else
|
||||
C.images += image(tempHud,patient,"hudhealthy")
|
||||
patient.med_img.icon_state = "hudhealthy"
|
||||
C.images += patient.med_img
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/hud/security
|
||||
@@ -95,37 +97,41 @@
|
||||
if(!M) return
|
||||
if(!M.client) return
|
||||
var/client/C = M.client
|
||||
var/icon/tempHud = 'hud.dmi'
|
||||
for(var/mob/living/carbon/human/perp in view(M))
|
||||
if(!C) continue
|
||||
var/perpname = "wot"
|
||||
if(perp.wear_id)
|
||||
C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
|
||||
perp.sec_img.icon_state = "hud[ckey(perp:wear_id:GetJobName())]"
|
||||
C.images += perp.sec_img
|
||||
if(istype(perp.wear_id,/obj/item/weapon/card/id))
|
||||
perpname = perp.wear_id:registered_name
|
||||
else if(istype(perp.wear_id,/obj/item/device/pda))
|
||||
var/obj/item/device/pda/tempPda = perp.wear_id
|
||||
perpname = tempPda.owner
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
|
||||
perp.sec2_img.icon_state = "hudwanted"
|
||||
C.images += perp.sec2_img
|
||||
break
|
||||
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
|
||||
perp.sec2_img.icon_state = "hudprisoner"
|
||||
C.images += perp.sec2_img
|
||||
break
|
||||
else
|
||||
perpname = perp.name
|
||||
C.images += image(tempHud,perp,"hudunknown")
|
||||
perp.sec_img.icon_state = "hudunknown"
|
||||
C.images += perp.sec_img
|
||||
|
||||
for (var/datum/data/record/E in data_core.general)
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
|
||||
C.images += image(tempHud,perp,"hudwanted")
|
||||
break
|
||||
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
|
||||
C.images += image(tempHud,perp,"hudprisoner")
|
||||
break
|
||||
for(var/named in perp.organs)
|
||||
var/datum/organ/external/E = perp.organs[named]
|
||||
for(var/obj/item/weapon/implant/I in E.implant)
|
||||
if(I.implanted)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
C.images += image(tempHud,perp,"hud_imp_tracking")
|
||||
perp.imp_img.icon_state = "hud_imp_tracking"
|
||||
C.images += perp.imp_img
|
||||
if(istype(I,/obj/item/weapon/implant/loyalty))
|
||||
C.images += image(tempHud,perp,"hud_imp_loyal")
|
||||
perp.imp_img.icon_state = "hud_imp_loyal"
|
||||
C.images += perp.imp_img
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/clothing/head/helmet/space/space_ninja
|
||||
desc = "What may appear to be a simple black garment is in fact a highly sophisticated nano-weave helmet. Standard issue ninja gear."
|
||||
name = "ninja hood"
|
||||
@@ -18,45 +20,44 @@
|
||||
slowdown = 0
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
var
|
||||
//Important parts of the suit.
|
||||
mob/living/carbon/affecting = null//The wearer.
|
||||
obj/item/weapon/cell/cell//Starts out with a high-capacity cell using New().
|
||||
datum/effect/effect/system/spark_spread/spark_system//To create sparks.
|
||||
reagent_list[] = list("tricordrazine","dexalinp","spaceacillin","anti_toxin","nutriment","radium","hyronalin")//The reagents ids which are added to the suit at New().
|
||||
stored_research[]//For stealing station research.
|
||||
obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk.
|
||||
var/mob/living/carbon/affecting = null//The wearer.
|
||||
var/obj/item/weapon/cell/cell//Starts out with a high-capacity cell using New().
|
||||
var/datum/effect/effect/system/spark_spread/spark_system//To create sparks.
|
||||
var/reagent_list[] = list("tricordrazine","dexalinp","spaceacillin","anti_toxin","nutriment","radium","hyronalin")//The reagents ids which are added to the suit at New().
|
||||
var/stored_research[]//For stealing station research.
|
||||
var/obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk.
|
||||
|
||||
//Other articles of ninja gear worn together, used to easily reference them after initializing.
|
||||
obj/item/clothing/head/helmet/space/space_ninja/n_hood
|
||||
obj/item/clothing/shoes/space_ninja/n_shoes
|
||||
obj/item/clothing/gloves/space_ninja/n_gloves
|
||||
var/obj/item/clothing/head/helmet/space/space_ninja/n_hood
|
||||
var/obj/item/clothing/shoes/space_ninja/n_shoes
|
||||
var/obj/item/clothing/gloves/space_ninja/n_gloves
|
||||
|
||||
//Main function variables.
|
||||
s_initialized = 0//Suit starts off.
|
||||
s_coold = 0//If the suit is on cooldown. Can be used to attach different cooldowns to abilities. Ticks down every second based on suit ntick().
|
||||
s_cost = 5.0//Base energy cost each ntick.
|
||||
s_acost = 25.0//Additional cost for additional powers active.
|
||||
k_cost = 200.0//Kamikaze energy cost each ntick.
|
||||
k_damage = 1.0//Brute damage potentially done by Kamikaze each ntick.
|
||||
s_delay = 40.0//How fast the suit does certain things, lower is faster. Can be overridden in specific procs. Also determines adverse probability.
|
||||
a_transfer = 20.0//How much reagent is transferred when injecting.
|
||||
r_maxamount = 80.0//How much reagent in total there is.
|
||||
var/s_initialized = 0//Suit starts off.
|
||||
var/s_coold = 0//If the suit is on cooldown. Can be used to attach different cooldowns to abilities. Ticks down every second based on suit ntick().
|
||||
var/s_cost = 5.0//Base energy cost each ntick.
|
||||
var/s_acost = 25.0//Additional cost for additional powers active.
|
||||
var/k_cost = 200.0//Kamikaze energy cost each ntick.
|
||||
var/k_damage = 1.0//Brute damage potentially done by Kamikaze each ntick.
|
||||
var/s_delay = 40.0//How fast the suit does certain things, lower is faster. Can be overridden in specific procs. Also determines adverse probability.
|
||||
var/a_transfer = 20.0//How much reagent is transferred when injecting.
|
||||
var/r_maxamount = 80.0//How much reagent in total there is.
|
||||
|
||||
//Support function variables.
|
||||
spideros = 0//Mode of SpiderOS. This can change so I won't bother listing the modes here (0 is hub). Check ninja_equipment.dm for how it all works.
|
||||
s_active = 0//Stealth off.
|
||||
s_busy = 0//Is the suit busy with a process? Like AI hacking. Used for safety functions.
|
||||
kamikaze = 0//Kamikaze on or off.
|
||||
k_unlock = 0//To unlock Kamikaze.
|
||||
var/spideros = 0//Mode of SpiderOS. This can change so I won't bother listing the modes here (0 is hub). Check ninja_equipment.dm for how it all works.
|
||||
var/s_active = 0//Stealth off.
|
||||
var/s_busy = 0//Is the suit busy with a process? Like AI hacking. Used for safety functions.
|
||||
var/kamikaze = 0//Kamikaze on or off.
|
||||
var/k_unlock = 0//To unlock Kamikaze.
|
||||
|
||||
//Ability function variables.
|
||||
s_bombs = 10.0//Number of starting ninja smoke bombs.
|
||||
a_boost = 3.0//Number of adrenaline boosters.
|
||||
var/s_bombs = 10.0//Number of starting ninja smoke bombs.
|
||||
var/a_boost = 3.0//Number of adrenaline boosters.
|
||||
|
||||
//Onboard AI related variables.
|
||||
mob/living/silicon/ai/AI//If there is an AI inside the suit.
|
||||
obj/item/device/paicard/pai//A slot for a pAI device
|
||||
obj/effect/overlay/hologram//Is the AI hologram on or off? Visible only to the wearer of the suit. This works by attaching an image to a blank overlay.
|
||||
flush = 0//If an AI purge is in progress.
|
||||
s_control = 1//If user in control of the suit.
|
||||
var/mob/living/silicon/ai/AI//If there is an AI inside the suit.
|
||||
var/obj/item/device/paicard/pai//A slot for a pAI device
|
||||
var/obj/effect/overlay/hologram//Is the AI hologram on or off? Visible only to the wearer of the suit. This works by attaching an image to a blank overlay.
|
||||
var/flush = 0//If an AI purge is in progress.
|
||||
var/s_control = 1//If user in control of the suit.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/effect/critter
|
||||
name = "Critter"
|
||||
desc = "Generic critter."
|
||||
@@ -6,79 +8,78 @@
|
||||
layer = 5.0
|
||||
density = 1
|
||||
anchored = 0
|
||||
var
|
||||
alive = 1
|
||||
health = 10
|
||||
max_health = 10
|
||||
aggression = 100
|
||||
speed = 8
|
||||
list/access_list = list()//accesses go here
|
||||
var/alive = 1
|
||||
var/health = 10
|
||||
var/max_health = 10
|
||||
var/aggression = 100
|
||||
var/speed = 8
|
||||
var/list/access_list = list()//accesses go here
|
||||
//AI things
|
||||
task = "thinking"
|
||||
var/task = "thinking"
|
||||
//Attacks at will
|
||||
aggressive = 1
|
||||
var/aggressive = 1
|
||||
//Will target an attacker
|
||||
defensive = 0
|
||||
var/defensive = 0
|
||||
//Will randomly move about
|
||||
wanderer = 1
|
||||
var/wanderer = 1
|
||||
//Will open doors it bumps ignoring access
|
||||
opensdoors = 0
|
||||
var/opensdoors = 0
|
||||
//Will randomly travel through vents
|
||||
ventcrawl = 0
|
||||
var/ventcrawl = 0
|
||||
|
||||
//Internal tracking ignore
|
||||
frustration = 0
|
||||
max_frustration = 8
|
||||
attack = 0
|
||||
attacking = 0
|
||||
steps = 0
|
||||
last_found = null
|
||||
target = null
|
||||
oldtarget_name = null
|
||||
target_lastloc = null
|
||||
var/frustration = 0
|
||||
var/max_frustration = 8
|
||||
var/attack = 0
|
||||
var/attacking = 0
|
||||
var/steps = 0
|
||||
var/last_found = null
|
||||
var/target = null
|
||||
var/oldtarget_name = null
|
||||
var/target_lastloc = null
|
||||
|
||||
thinkspeed = 15
|
||||
chasespeed = 4
|
||||
wanderspeed = 10
|
||||
var/thinkspeed = 15
|
||||
var/chasespeed = 4
|
||||
var/wanderspeed = 10
|
||||
//The last guy who attacked it
|
||||
attacker = null
|
||||
var/attacker = null
|
||||
//Will not attack this thing
|
||||
friend = null
|
||||
var/friend = null
|
||||
//How far to look for things dont set this overly high
|
||||
seekrange = 7
|
||||
var/seekrange = 7
|
||||
|
||||
//If true will attack these things
|
||||
atkcarbon = 1
|
||||
atksilicon = 0
|
||||
atkcritter = 0
|
||||
var/atkcarbon = 1
|
||||
var/atksilicon = 0
|
||||
var/atkcritter = 0
|
||||
//Attacks critters of the same type
|
||||
atksame = 0
|
||||
atkmech = 0
|
||||
var/atksame = 0
|
||||
var/atkmech = 0
|
||||
|
||||
//Attacks syndies/traitors (distinguishes via mind)
|
||||
atksynd = 1
|
||||
var/atksynd = 1
|
||||
//Attacks things NOT in its obj/req_access list
|
||||
atkreq = 0
|
||||
var/atkreq = 0
|
||||
|
||||
//Damage multipliers
|
||||
brutevuln = 1
|
||||
firevuln = 1
|
||||
var/brutevuln = 1
|
||||
var/firevuln = 1
|
||||
//DR
|
||||
armor = 0
|
||||
var/armor = 0
|
||||
|
||||
//How much damage it does it melee
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 2
|
||||
var/melee_damage_lower = 1
|
||||
var/melee_damage_upper = 2
|
||||
//Basic attack message when they move to attack and attack
|
||||
angertext = "charges at"
|
||||
attacktext = "attacks"
|
||||
deathtext = "dies!"
|
||||
var/angertext = "charges at"
|
||||
var/attacktext = "attacks"
|
||||
var/deathtext = "dies!"
|
||||
|
||||
chasestate = null // the icon state to use when attacking or chasing a target
|
||||
attackflick = null // the icon state to flick when it attacks
|
||||
attack_sound = null // the sound it makes when it attacks!
|
||||
var/chasestate = null // the icon state to use when attacking or chasing a target
|
||||
var/attackflick = null // the icon state to flick when it attacks
|
||||
var/attack_sound = null // the sound it makes when it attacks!
|
||||
|
||||
attack_speed = 25 // delay of attack
|
||||
var/attack_speed = 25 // delay of attack
|
||||
|
||||
|
||||
proc
|
||||
@@ -135,4 +136,4 @@
|
||||
|
||||
|
||||
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/projectile/hivebotbullet
|
||||
damage = 5
|
||||
damage_type = BRUTE
|
||||
@@ -25,9 +27,8 @@
|
||||
melee_damage_upper = 3
|
||||
angertext = "leaps at"
|
||||
attacktext = "claws"
|
||||
var
|
||||
ranged = 0
|
||||
rapid = 0
|
||||
var/ranged = 0
|
||||
var/rapid = 0
|
||||
proc
|
||||
Shoot(var/target, var/start, var/user, var/bullet = 0)
|
||||
OpenFire(var/thing)//bluh ill rename this later or somethin
|
||||
@@ -186,12 +187,11 @@
|
||||
seekrange = 2
|
||||
armor = 10
|
||||
|
||||
var
|
||||
bot_type = "norm"
|
||||
bot_amt = 10
|
||||
spawn_delay = 600
|
||||
turn_on = 0
|
||||
auto_spawn = 1
|
||||
var/bot_type = "norm"
|
||||
var/bot_amt = 10
|
||||
var/spawn_delay = 600
|
||||
var/turn_on = 0
|
||||
var/auto_spawn = 1
|
||||
proc
|
||||
warpbots()
|
||||
|
||||
@@ -247,4 +247,4 @@
|
||||
|
||||
/obj/effect/critter/hivebot/tele/rapid
|
||||
bot_type = "rapid"
|
||||
spawn_delay = 800
|
||||
spawn_delay = 800
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
proc/Intoxicated(phrase)
|
||||
phrase = html_decode(phrase)
|
||||
var
|
||||
leng=lentext(phrase)
|
||||
counter=lentext(phrase)
|
||||
newphrase="";newletter=""
|
||||
var/leng=lentext(phrase)
|
||||
var/counter=lentext(phrase)
|
||||
var/newphrase=""
|
||||
var/newletter=""
|
||||
while(counter>=1)
|
||||
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
|
||||
if(rand(1,3)==3)
|
||||
@@ -78,4 +80,4 @@ proc/Ellipsis(original_msg, chance = 50)
|
||||
|
||||
new_msg = dd_list2text(new_words," ")
|
||||
|
||||
return new_msg
|
||||
return new_msg
|
||||
|
||||
@@ -1471,6 +1471,19 @@
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood
|
||||
name = "\improper \"LiquidFood\" ration"
|
||||
icon_state = "liquidfood"
|
||||
desc = "A bland, tasteless pulp of what you need to survive. Packaged in a airtight bag, which you can drink through a straw. Strangely crunchy."
|
||||
trash = "liquidfood"
|
||||
var/flavored = 0
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
bitesize = 6
|
||||
|
||||
/////////////////////////////////////////////////Sliceable////////////////////////////////////////
|
||||
// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
|
||||
|
||||
@@ -2022,6 +2035,27 @@
|
||||
else
|
||||
..()
|
||||
|
||||
// Liquidfood + Flavoring = Flavored Liquidfood! :P
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood/attackby(obj/item/weapon/flavor/W as obj, mob/user as mob)
|
||||
// Check if already flavored
|
||||
if(istype(W))
|
||||
if (flavored)
|
||||
user << "You cannot add flavoring to an already flavored ration, however bland it may be."
|
||||
return
|
||||
|
||||
user.visible_message("\The [user] adds [prob(30) ? "some of" : ""] \a [W] to \a [src], mixing it into [W.descriptor] gruel.",\
|
||||
"You add \the [W] into your bland [src]. As you mix it into a grotesquely [W.color] paste, you reflect that this was not a wise decision.",\
|
||||
"You hear a small tinfoil package being ripped open, then the sound of a thick paste being mixed.")
|
||||
name = "[W.color] \"LiquidFood\" ration"
|
||||
icon_state = "liquidfood-[W.color]"
|
||||
desc = "A flavored pulp of nutritional essentials. [W.newDesc]"
|
||||
flavored = 1
|
||||
|
||||
del(W)
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/taco
|
||||
name = "taco"
|
||||
desc = "Take a bite!"
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
/proc/bsi_cast_ray(icon/I, list/start, list/end)
|
||||
|
||||
if(abs(start[1] - end[1]) > abs(start[2] - end[2]))
|
||||
var/dist = abs(start[1] - end[1]) * 2
|
||||
|
||||
for(var/i = 1, i <= dist, i++)
|
||||
var/x = round((start[1] * i / dist) + (end[1] * (1 - i / dist)))
|
||||
var/y = round((start[2] * i / dist) + (end[2] * (1 - i / dist)))
|
||||
|
||||
if(I.GetPixel(x, y) != null)
|
||||
return list(x, y)
|
||||
|
||||
else
|
||||
var/dist = abs(start[2] - end[2]) * 2
|
||||
|
||||
for(var/i = 1, i <= dist, i++)
|
||||
var/x = round((start[1] * i / dist) + (end[1] * (1 - i / dist)))
|
||||
var/y = round((start[2] * i / dist) + (end[2] * (1 - i / dist)))
|
||||
|
||||
if(I.GetPixel(x, y) != null)
|
||||
return list(x, y)
|
||||
|
||||
return null
|
||||
|
||||
/proc/bsi_split_colors(color)
|
||||
if(color == null)
|
||||
return list(0, 0, 0, 0)
|
||||
|
||||
var/list/colors = list(0, 0, 0, 0)
|
||||
colors[1] = hex2num(copytext(color, 2, 4))
|
||||
colors[2] = hex2num(copytext(color, 4, 6))
|
||||
colors[3] = hex2num(copytext(color, 6, 8))
|
||||
colors[4] = (length(color) > 7)? hex2num(copytext(color, 8, 10)) : 255
|
||||
|
||||
return colors
|
||||
|
||||
/proc/bsi_spread(icon/I, list/start_point)
|
||||
var/list/queue = list()
|
||||
queue[++queue.len] = start_point
|
||||
|
||||
var/i = 0
|
||||
|
||||
while(i++ < length(queue))
|
||||
var/x = queue[i][1]
|
||||
var/y = queue[i][2]
|
||||
|
||||
var/list/pixel = bsi_split_colors(I.GetPixel(x, y))
|
||||
if(pixel[4] == 0)
|
||||
continue
|
||||
|
||||
var/list/n = (y < I.Height())? bsi_split_colors(I.GetPixel(x, y + 1)) : list(0, 0, 0, 0)
|
||||
var/list/s = (y > 1)? bsi_split_colors(I.GetPixel(x, y - 1)) : list(0, 0, 0, 0)
|
||||
var/list/e = (x < I.Width())? bsi_split_colors(I.GetPixel(x + 1, y)) : list(0, 0, 0, 0)
|
||||
var/list/w = (x > 1)? bsi_split_colors(I.GetPixel(x - 1, y)) : list(0, 0, 0, 0)
|
||||
|
||||
var/value = (i == 1)? 16 : max(n[1] - 1, e[1] - 1, s[1] - 1, w[1] - 1)
|
||||
|
||||
if(prob(50))
|
||||
value = max(0, value - 1)
|
||||
|
||||
if(prob(50))
|
||||
value = max(0, value - 1)
|
||||
|
||||
if(prob(50))
|
||||
value = max(0, value - 1)
|
||||
|
||||
if(value <= pixel[1])
|
||||
continue
|
||||
|
||||
var/v2 = 256 - ((16 - value) * (16 - value))
|
||||
|
||||
I.DrawBox(rgb(value, v2, pixel[4] - v2, pixel[4]), x, y)
|
||||
|
||||
if(n[4] != 0 && n[1] < value - 1)
|
||||
queue[++queue.len] = list(x, y + 1)
|
||||
|
||||
if(s[4] != 0 && s[1] < value - 1)
|
||||
queue[++queue.len] = list(x, y - 1)
|
||||
|
||||
if(e[4] != 0 && e[1] < value - 1)
|
||||
queue[++queue.len] = list(x + 1, y)
|
||||
|
||||
if(w[4] != 0 && w[1] < value - 1)
|
||||
queue[++queue.len] = list(x - 1, y)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/proc/bsi_generate_mask(icon/source, state)
|
||||
var/icon/mask = icon(source, state)
|
||||
|
||||
mask.MapColors(
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 1, 1,
|
||||
0, 0, 0, 0)
|
||||
|
||||
var/hits = 0
|
||||
|
||||
for(var/i = 1, i <= 10, i++)
|
||||
var/point1
|
||||
var/point2
|
||||
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
point1 = list(rand(1, mask.Width()), mask.Height())
|
||||
point2 = list(rand(1, mask.Width()), 1)
|
||||
|
||||
else
|
||||
point2 = list(rand(1, mask.Width()), mask.Height())
|
||||
point1 = list(rand(1, mask.Width()), 1)
|
||||
|
||||
else
|
||||
if(prob(50))
|
||||
point1 = list(mask.Width(), rand(1, mask.Height()))
|
||||
point2 = list(1, rand(1, mask.Height()))
|
||||
|
||||
else
|
||||
point2 = list(mask.Width(), rand(1, mask.Height()))
|
||||
point1 = list(1, rand(1, mask.Height()))
|
||||
|
||||
var/hit = bsi_cast_ray(mask, point1, point2)
|
||||
|
||||
if(hit == null)
|
||||
continue
|
||||
|
||||
hits++
|
||||
|
||||
bsi_spread(mask, hit)
|
||||
|
||||
if(prob(20 + hits * 20))
|
||||
break
|
||||
|
||||
if(hits == 0)
|
||||
return null
|
||||
|
||||
else
|
||||
return mask
|
||||
|
||||
/proc/generate_bluespace_icon(icon/source, state)
|
||||
|
||||
var/icon/mask = bsi_generate_mask(source, state)
|
||||
|
||||
if(mask == null)
|
||||
return source
|
||||
|
||||
var/icon/unaffected = icon(mask)
|
||||
unaffected.MapColors(
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 1,
|
||||
0, 0, 0, 0,
|
||||
255, 255, 255, 0)
|
||||
|
||||
var/icon/temp = icon(source, state) //Mask already contains the original alpha values, avoid squaring them
|
||||
temp.MapColors(
|
||||
1, 0, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 255)
|
||||
|
||||
unaffected.Blend(temp, ICON_MULTIPLY)
|
||||
|
||||
var/icon/bluespaced = icon(mask)
|
||||
bluespaced.MapColors(
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 1,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
1, 1, 1, 0)
|
||||
|
||||
bluespaced.Blend(icon(source, state), ICON_MULTIPLY)
|
||||
|
||||
var/list/frames = list(
|
||||
list(0.000,20),
|
||||
list(0.020, 5),
|
||||
list(0.050, 4),
|
||||
list(0.080, 5),
|
||||
list(0.100,10),
|
||||
list(0.080, 5),
|
||||
list(0.050, 4),
|
||||
list(0.020, 5),
|
||||
|
||||
list(0.000,20),
|
||||
list(0.020, 5),
|
||||
list(0.050, 4),
|
||||
list(0.080, 5),
|
||||
list(0.100,10),
|
||||
list(0.080, 5),
|
||||
list(0.050, 4),
|
||||
list(0.020, 5),
|
||||
|
||||
list(0.000,20),
|
||||
list(0.020, 5),
|
||||
list(0.050, 4),
|
||||
list(0.080, 5),
|
||||
list(0.100,10),
|
||||
list(0.080, 5),
|
||||
list(0.050, 4),
|
||||
list(0.020, 5),
|
||||
)
|
||||
|
||||
var/list/colors = list(
|
||||
list( 75, 75, 75, 0),
|
||||
list( 25, 25, 25, 0),
|
||||
list( 75, 75, 75, 0),
|
||||
list( 25, 25, 75, 0),
|
||||
list( 75, 75, 300, 0),
|
||||
list( 25, 25, 300, 0),
|
||||
list(255, 255, 255, 0),
|
||||
list( 0, 0, 0, 255),
|
||||
list( 0, 0, 0, 0),
|
||||
list( 0, 0, 0, 0),
|
||||
)
|
||||
|
||||
for(var/i = 1, i <= rand(1, 5), i++)
|
||||
var/f = rand(1, length(frames))
|
||||
|
||||
if(frames[f][2] > 1)
|
||||
frames[f][2]--
|
||||
frames.Insert(f, 0)
|
||||
|
||||
frames[f] = list(0.8, 1)
|
||||
|
||||
var/icon/result = generate_color_animation(bluespaced, colors, frames)
|
||||
result.Blend(unaffected, ICON_UNDERLAY)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
|
||||
/atom/verb/test()
|
||||
set src in view()
|
||||
src.icon = generate_bluespace_icon(src.icon, src.icon_state)
|
||||
|
||||
/mob/verb/bluespam()
|
||||
for(var/turf/t in view(5))
|
||||
var/obj/s = new /obj/square(t)
|
||||
s.icon = generate_bluespace_icon(s.icon, s.icon_state)
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
//----------------------------------------
|
||||
//
|
||||
// Return a copy of the provided icon,
|
||||
// after calling MapColors on it. The
|
||||
// color values are linearily interpolated
|
||||
// between the pairs provided, based on
|
||||
// the ratio argument.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
/proc/MapColors_interpolate(icon/input, ratio,
|
||||
rr1, rg1, rb1, ra1, rr2, rg2, rb2, ra2,
|
||||
gr1, gg1, gb1, ga1, gr2, gg2, gb2, ga2,
|
||||
br1, bg1, bb1, ba1, br2, bg2, bb2, ba2,
|
||||
ar1, ag1, ab1, aa1, ar2, ag2, ab2, aa2,
|
||||
zr1, zg1, zb1, za1, zr2, zg2, zb2, za2)
|
||||
var/r = ratio
|
||||
var/i = 1 - ratio
|
||||
var/icon/I = icon(input)
|
||||
|
||||
I.MapColors(
|
||||
(rr1 * r + rr2 * i) / 255.0, (rg1 * r + rg2 * i) / 255.0, (rb1 * r + rb2 * i) / 255.0, (ra1 * r + ra2 * i) / 255.0,
|
||||
(gr1 * r + gr2 * i) / 255.0, (gg1 * r + gg2 * i) / 255.0, (gb1 * r + gb2 * i) / 255.0, (ga1 * r + ga2 * i) / 255.0,
|
||||
(br1 * r + br2 * i) / 255.0, (bg1 * r + bg2 * i) / 255.0, (bb1 * r + bb2 * i) / 255.0, (ba1 * r + ba2 * i) / 255.0,
|
||||
(ar1 * r + ar2 * i) / 255.0, (ag1 * r + ag2 * i) / 255.0, (ab1 * r + ab2 * i) / 255.0, (aa1 * r + aa2 * i) / 255.0,
|
||||
(zr1 * r + zr2 * i) / 255.0, (zg1 * r + zg2 * i) / 255.0, (zb1 * r + zb2 * i) / 255.0, (za1 * r + za2 * i) / 255.0)
|
||||
|
||||
return I
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
//
|
||||
// Extension of the above that takes a
|
||||
// list of lists of color values, rather
|
||||
// than a large number of arguments.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
/proc/MapColors_interpolate_list(icon/I, ratio, list/colors)
|
||||
var/list/c[10]
|
||||
|
||||
//Provide default values for any missing colors (without altering the original list
|
||||
for(var/i = 1, i <= 10, i++)
|
||||
c[i] = list(0, 0, 0, (i == 7 || i == 8)? 255 : 0)
|
||||
|
||||
if(istype(colors[i], /list))
|
||||
for(var/j = 1, j <= 4, j++)
|
||||
if(j <= length(colors[i]) && isnum(colors[i][j]))
|
||||
c[i][j] = colors[i][j]
|
||||
|
||||
return MapColors_interpolate(I, ratio,
|
||||
colors[ 1][1], colors[ 1][2], colors[ 1][3], colors[ 1][4], // Red 1
|
||||
colors[ 2][1], colors[ 2][2], colors[ 2][3], colors[ 2][4], // Red 2
|
||||
colors[ 3][1], colors[ 3][2], colors[ 3][3], colors[ 3][4], // Green 1
|
||||
colors[ 4][1], colors[ 4][2], colors[ 4][3], colors[ 4][4], // Green 2
|
||||
colors[ 5][1], colors[ 5][2], colors[ 5][3], colors[ 5][4], // Blue 1
|
||||
colors[ 6][1], colors[ 6][2], colors[ 6][3], colors[ 6][4], // Blue 2
|
||||
colors[ 7][1], colors[ 7][2], colors[ 7][3], colors[ 7][4], // Alpha 1
|
||||
colors[ 8][1], colors[ 8][2], colors[ 8][3], colors[ 8][4], // Alpha 2
|
||||
colors[ 9][1], colors[ 9][2], colors[ 9][3], colors[ 9][4], // Added 1
|
||||
colors[10][1], colors[10][2], colors[10][3], colors[10][4]) // Added 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
//
|
||||
// Take the source image, and return an animated
|
||||
// version, that transitions between the provided
|
||||
// color mappings, according to the provided
|
||||
// pattern.
|
||||
//
|
||||
// Colors should be in a format suitable for
|
||||
// MapColors_interpolate_list, and frames should
|
||||
// be a list of 'frames', where each frame is itself
|
||||
// a list, element 1 being the ratio of the first
|
||||
// color to the second, and element 2 being how
|
||||
// long the frame lasts, in tenths of a second.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
/proc/generate_color_animation(icon/icon, list/colors, list/frames)
|
||||
var/icon/out = icon('uristrunes.dmi', "")
|
||||
var/frame_num = 1
|
||||
|
||||
for(var/frame in frames)
|
||||
var/icon/I = MapColors_interpolate_list(icon, frame[1], colors)
|
||||
out.Insert(I, "", 2, frame_num++, 0, frame[2])
|
||||
|
||||
return out
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,268 @@
|
||||
//----------------------------------------
|
||||
//
|
||||
// Take a source icon, convert into a mask,
|
||||
// then create a border around it.
|
||||
//
|
||||
// The output then uses the colors and
|
||||
// alpha values provided.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
/proc/create_border_image(icon/input, border_color = "#000000", fill_color = "#000000", border_alpha = 255, fill_alpha = 255)
|
||||
var/icon/I = icon('uristrunes.dmi', "blank")
|
||||
I.Blend(input, ICON_OVERLAY)
|
||||
|
||||
//Discard the image
|
||||
I.MapColors(0, 0, 0, 0, //-\ Ignore
|
||||
0, 0, 0, 0, //--> The
|
||||
0, 0, 0, 0, //-/ Colors
|
||||
0,255, 0, 1, //Keep alpha channel, any pixel with non-zero alpha gets max green channel
|
||||
0, 0, 0, 0)
|
||||
|
||||
//Loop over the image, calculating the border value, and storing it in the red channel
|
||||
//Store border's alpha in the blue channel
|
||||
for(var/x = 1, x <= 32, x++)
|
||||
for(var/y = 1, y <= 32, y++)
|
||||
var/p = I.GetPixel(x, y)
|
||||
|
||||
if(p == null)
|
||||
var/n = I.GetPixel(x, y + 1)
|
||||
var/s = I.GetPixel(x, y - 1)
|
||||
var/e = I.GetPixel(x + 1, y)
|
||||
var/w = I.GetPixel(x - 1, y)
|
||||
var/ne = I.GetPixel(x + 1, y + 1)
|
||||
var/se = I.GetPixel(x + 1, y - 1)
|
||||
var/nw = I.GetPixel(x - 1, y + 1)
|
||||
var/sw = I.GetPixel(x - 1, y - 1)
|
||||
|
||||
var/sum_adj = ((n == "#00ff00"? 1 : 0) \
|
||||
+ (s == "#00ff00"? 1 : 0) \
|
||||
+ (e == "#00ff00"? 1 : 0) \
|
||||
+ (w == "#00ff00"? 1 : 0))
|
||||
|
||||
var/sum_diag = ((ne == "#00ff00"? 1 : 0) \
|
||||
+ (se == "#00ff00"? 1 : 0) \
|
||||
+ (nw == "#00ff00"? 1 : 0) \
|
||||
+ (sw == "#00ff00"? 1 : 0))
|
||||
|
||||
|
||||
if(sum_adj)
|
||||
I.DrawBox(rgb(255, 0, 200, 0), x, y)
|
||||
|
||||
else if(sum_diag)
|
||||
I.DrawBox(rgb(255, 0, 100, 0), x, y)
|
||||
|
||||
else
|
||||
I.DrawBox(rgb(0, 0, 0, 0), x, y)
|
||||
|
||||
else if(p != "#00ff00")
|
||||
var/a = 255
|
||||
|
||||
if(length(p) == 9) // "#rrggbbaa", we want the aa
|
||||
a = hex2num(copytext(p, 8))
|
||||
|
||||
I.DrawBox(rgb(255 - a, a, 255 - a, a), x, y)
|
||||
|
||||
//Map the red and green channels to the desired output colors
|
||||
I.MapColors(border_color, fill_color, rgb(0, 0, 0, border_alpha), rgb(0, 0, 0, fill_alpha), "#00000000")
|
||||
|
||||
return I
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
//
|
||||
// Take a source icon, convert into a mask,
|
||||
// and border. Color them according to args,
|
||||
// and animate.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
/proc/animate_rune_full(icon/input, rr1, rg1, rb1, ra1, rr2, rg2, rb2, ra2, br1, bg1, bb1, ba1, br2, bg2, bb2, ba2, ar1, ag1, ab1, aa1, ar2, ag2, ab2, aa2, or1, og1, ob1, oa1, or2, og2, ob2, oa2, frames)
|
||||
|
||||
var/list/colors[10]
|
||||
colors[ 1] = list(rr1, rg1, rb1, ra1) //Rune color 1
|
||||
colors[ 2] = list(rr2, rg2, rb2, ra2) //Rune color 2
|
||||
colors[ 3] = list(br1, bg1, bb1, ba1) //Border color 1
|
||||
colors[ 4] = list(br2, bg2, bb2, ba2) //Border color 2
|
||||
colors[ 5] = list( 0, 0, 0, 0) //Unused
|
||||
colors[ 6] = list( 0, 0, 0, 0) //Unused
|
||||
colors[ 7] = list(ar1, ag1, ab1, aa1) //Alpha color 1
|
||||
colors[ 8] = list(ar2, ag2, ab2, aa2) //Alpha color 2
|
||||
colors[ 9] = list(or1, og1, ob1, oa1) //Added color 1
|
||||
colors[10] = list(or2, og2, ob2, oa2) //Added color 2
|
||||
|
||||
var/icon/base = create_border_image(input, "#00ff0000", "#ff000000")
|
||||
|
||||
return generate_color_animation(base, colors, frames)
|
||||
|
||||
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
//
|
||||
// Calls the above, but accepts colors in
|
||||
// the form of "#RRGGBBAA", and provides
|
||||
// default values.
|
||||
//
|
||||
// Main limit is that it doesn't accept
|
||||
// negative values, which you probably
|
||||
// don't need anyway. Also missing a few
|
||||
// color inputs, which would also be rarely
|
||||
// used.
|
||||
//
|
||||
//----------------------------------------
|
||||
|
||||
|
||||
/proc/animate_rune(icon/input, rune_color = "#00000000", border_color = "#c8000000", rune_color2 = "#00000000", border_color2 = "#d8380000", alpha = 255, alpha2 = 255, frames = rune_animation)
|
||||
var/rr1 = hex2num(copytext(rune_color, 2, 4))
|
||||
var/rg1 = hex2num(copytext(rune_color, 4, 6))
|
||||
var/rb1 = hex2num(copytext(rune_color, 6, 8))
|
||||
var/ra1 = hex2num(copytext(rune_color, 8, 10))
|
||||
var/rr2 = hex2num(copytext(rune_color2, 2, 4))
|
||||
var/rg2 = hex2num(copytext(rune_color2, 4, 6))
|
||||
var/rb2 = hex2num(copytext(rune_color2, 6, 8))
|
||||
var/ra2 = hex2num(copytext(rune_color2, 8, 10))
|
||||
var/br1 = hex2num(copytext(border_color, 2, 4))
|
||||
var/bg1 = hex2num(copytext(border_color, 4, 6))
|
||||
var/bb1 = hex2num(copytext(border_color, 6, 8))
|
||||
var/ba1 = hex2num(copytext(border_color, 8, 10))
|
||||
var/br2 = hex2num(copytext(border_color2, 2, 4))
|
||||
var/bg2 = hex2num(copytext(border_color2, 4, 6))
|
||||
var/bb2 = hex2num(copytext(border_color2, 6, 8))
|
||||
var/ba2 = hex2num(copytext(border_color2, 8, 10))
|
||||
|
||||
return animate_rune_full(input, rr1, rg1, rb1, ra1, rr2, rg2, rb2, ra2, br1, bg1, bb1, ba1, br2, bg2, bb2, ba2, 0, 0, 0, alpha, 0, 0, 0, alpha2, 0, 0, 0, 0, 0, 0, 0, 0, frames)
|
||||
|
||||
|
||||
/proc/inanimate_rune(icon/input, rune_color = "#00000000", border_color = "#c8000000")
|
||||
var/icon/base = create_border_image(input, "#00ff0000", "#ff000000")
|
||||
|
||||
base.MapColors(rune_color, border_color, "#00000000", "#000000ff", "#00000000")
|
||||
|
||||
return base
|
||||
|
||||
var/list/rune_animation = list(
|
||||
list(0.000, 5),
|
||||
list(0.020, 1),
|
||||
list(0.050, 1),
|
||||
list(0.090, 1),
|
||||
list(0.140, 1),
|
||||
list(0.200, 1),
|
||||
list(0.270, 1),
|
||||
list(0.340, 1),
|
||||
list(0.420, 1),
|
||||
list(0.500, 1),
|
||||
list(0.590, 1),
|
||||
list(0.675, 1),
|
||||
list(0.750, 1),
|
||||
list(0.900, 1),
|
||||
list(1.000, 6),
|
||||
list(0.875, 1),
|
||||
list(0.750, 1),
|
||||
list(0.625, 1),
|
||||
list(0.500, 1),
|
||||
list(0.375, 1),
|
||||
list(0.250, 1),
|
||||
list(0.125, 1),
|
||||
)
|
||||
|
||||
/var/list/rune_cache = list()
|
||||
|
||||
/proc/get_rune(rune_bits, animated = 0)
|
||||
var/lookup = "[rune_bits]-[animated]"
|
||||
|
||||
if(lookup in rune_cache)
|
||||
return rune_cache[lookup]
|
||||
|
||||
var/icon/base = icon('uristrunes.dmi', "")
|
||||
|
||||
for(var/i = 0, i < 10, i++)
|
||||
if(rune_bits & (1 << i))
|
||||
base.Blend(icon('uristrunes.dmi', "rune-[1 << i]"), ICON_OVERLAY)
|
||||
|
||||
var/icon/result
|
||||
|
||||
if(animated == 1)
|
||||
result = animate_rune(base)
|
||||
|
||||
else
|
||||
result = inanimate_rune(base)
|
||||
|
||||
rune_cache[lookup] = result
|
||||
return result
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Testing procs and Fun procs
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/verb/create_rune()
|
||||
var/obj/o = new(locate(x, y, z))
|
||||
o.icon = get_rune(rand(1, 1023), 1)
|
||||
|
||||
/mob/verb/runes_15x15()
|
||||
for(var/turf/t in range(7))
|
||||
var/obj/o = new /obj(t)
|
||||
o.icon = get_rune(rand(1, 1023), 1)
|
||||
|
||||
|
||||
/*
|
||||
/mob/verb/create_rune_custom(rune as num, color1 as color, border1 as color, color2 as color, border2 as color, alpha1 as num, alpha2 as num)
|
||||
var/icon/I = icon('uristrunes.dmi', "blank")
|
||||
|
||||
for(var/i = 0, i < 10, i++)
|
||||
if(rune & (1 << i))
|
||||
I.Blend(icon('uristrunes.dmi', "rune-[1 << i]"), ICON_OVERLAY)
|
||||
|
||||
var/obj/o = new(locate(x, y, z))
|
||||
o.icon = animate_rune(I, color1, border1, color2, border2, alpha1, alpha2)
|
||||
|
||||
/mob/verb/spam()
|
||||
for(var/turf/t in range(4))
|
||||
var/icon/I = icon('uristrunes.dmi', "blank")
|
||||
|
||||
var/rune = rand(1, 1023)
|
||||
for(var/i = 0, i < 10, i++)
|
||||
if(rune & (1 << i))
|
||||
I.Blend(icon('uristrunes.dmi', "rune-[1 << i]"), ICON_OVERLAY)
|
||||
|
||||
var/obj/o = new(t)
|
||||
o.icon = animate_rune_full(I, rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
rand(0, 255), rand(0, 255), rand(0, 255), rand(-255, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, rand(0, 255),
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
list(
|
||||
list(0.000, 5),
|
||||
list(0.020, 1),
|
||||
list(0.050, 1),
|
||||
list(0.090, 1),
|
||||
list(0.140, 1),
|
||||
list(0.200, 1),
|
||||
list(0.270, 1),
|
||||
list(0.340, 1),
|
||||
list(0.420, 1),
|
||||
list(0.500, 1),
|
||||
list(0.590, 1),
|
||||
list(0.675, 1),
|
||||
list(0.750, 1),
|
||||
list(0.900, 1),
|
||||
list(1.000, 6),
|
||||
list(0.875, 1),
|
||||
list(0.750, 1),
|
||||
list(0.625, 1),
|
||||
list(0.500, 1),
|
||||
list(0.375, 1),
|
||||
list(0.250, 1),
|
||||
list(0.125, 1),
|
||||
))
|
||||
*/
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/mob/living/blob
|
||||
name = "blob fragment"
|
||||
real_name = "blob fragment"
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/mob/living/carbon/alien/humanoid
|
||||
var
|
||||
oxygen_alert = 0
|
||||
toxins_alert = 0
|
||||
fire_alert = 0
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
temperature_alert = 0
|
||||
/mob/living/carbon/alien/humanoid
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
var/temperature_alert = 0
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/Life()
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/mob/living/carbon/alien/larva
|
||||
var
|
||||
oxygen_alert = 0
|
||||
toxins_alert = 0
|
||||
fire_alert = 0
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
temperature_alert = 0
|
||||
/mob/living/carbon/alien/larva
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
var/temperature_alert = 0
|
||||
|
||||
|
||||
/mob/living/carbon/alien/larva/Life()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/mmi
|
||||
name = "Man-Machine Interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
|
||||
@@ -14,11 +16,10 @@
|
||||
|
||||
//Revised. Brainmob is now contained directly within object of transfer. MMI in this case.
|
||||
|
||||
var
|
||||
locked = 0
|
||||
mob/living/carbon/brain/brainmob = null//The current occupant.
|
||||
mob/living/silicon/robot = null//Appears unused.
|
||||
obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
var/locked = 0
|
||||
var/mob/living/carbon/brain/brainmob = null//The current occupant.
|
||||
var/mob/living/silicon/robot = null//Appears unused.
|
||||
var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
|
||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O,/obj/item/brain) && !brainmob) //Time to stick a brain in it --NEO
|
||||
@@ -132,4 +133,4 @@
|
||||
brainmob << "Can't do that while incapacitated or dead."
|
||||
|
||||
radio.listening = radio.listening==1 ? 0 : 1
|
||||
brainmob << "\blue Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast."
|
||||
brainmob << "\blue Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast."
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/mob/living/carbon/brain
|
||||
var
|
||||
obj/item/container = null
|
||||
timeofhostdeath = 0
|
||||
var/obj/item/container = null
|
||||
var/timeofhostdeath = 0
|
||||
|
||||
New()
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
@@ -41,4 +42,4 @@
|
||||
if (!container || !istype(container, /obj/item/device/mmi))
|
||||
src.verbs += /mob/proc/ghost
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
mob/var/image/antag_img
|
||||
mob/living/carbon/human
|
||||
var/image/med_img
|
||||
var/image/sec_img
|
||||
var/image/sec2_img
|
||||
var/image/imp_img
|
||||
var/image/health_img
|
||||
@@ -1237,12 +1237,12 @@
|
||||
|
||||
if(lying)
|
||||
icon = lying_icon
|
||||
overlays += body_overlays_standing
|
||||
overlays += body_overlays_lying
|
||||
|
||||
if(!lying)
|
||||
icon = stand_icon
|
||||
overlays += body_overlays_standing
|
||||
|
||||
overlays += body_overlays_lying
|
||||
|
||||
|
||||
overlays += clothing_overlays
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. No air applies this value.
|
||||
|
||||
/mob/living/carbon/human
|
||||
var
|
||||
oxygen_alert = 0
|
||||
toxins_alert = 0
|
||||
fire_alert = 0
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
temperature_alert = 0
|
||||
var/temperature_alert = 0
|
||||
|
||||
// used to do some stuff only on every X life tick
|
||||
life_tick = 0
|
||||
isbreathing = 1
|
||||
holdbreath = 0
|
||||
lyingcheck = 0
|
||||
buckle_check = 0
|
||||
var/life_tick = 0
|
||||
var/isbreathing = 1
|
||||
var/holdbreath = 0
|
||||
var/lyingcheck = 0
|
||||
var/buckle_check = 0
|
||||
|
||||
/mob/living/carbon/human/Life()
|
||||
set invisibility = 0
|
||||
@@ -1092,7 +1093,7 @@
|
||||
// Apparently deletes all the hud_ icons
|
||||
for(var/image/hud in client.images)
|
||||
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
|
||||
del(hud)
|
||||
client.images -= hud//del(hud)
|
||||
|
||||
// Handle special vision stuff, such as thermals or ghost vision
|
||||
// -------------------------------------------------------------
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
// === MEMETIC ANOMALY ===
|
||||
// =======================
|
||||
|
||||
@@ -18,8 +20,7 @@ var/global/const/MAXIMUM_MEME_POINTS = 750
|
||||
mob/living/carbon/var/list/parasites = list()
|
||||
|
||||
mob/living/parasite
|
||||
var
|
||||
mob/living/carbon/host // the host that this parasite occupies
|
||||
var/mob/living/carbon/host // the host that this parasite occupies
|
||||
|
||||
Login()
|
||||
..()
|
||||
@@ -592,4 +593,4 @@ mob/living/parasite/check_contents_for(t)
|
||||
mob/living/parasite/check_contents_for_reagent(t)
|
||||
if(!host) return 0
|
||||
|
||||
return host.check_contents_for_reagent(t)
|
||||
return host.check_contents_for_reagent(t)
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
if(client)
|
||||
for(var/image/hud in client.images)
|
||||
if(copytext(hud.icon_state,1,4) == "hud")
|
||||
del(hud)
|
||||
client.images -= hud
|
||||
|
||||
/mob/living/silicon/pai/proc/securityHUD()
|
||||
if(client)
|
||||
var/icon/tempHud = 'hud.dmi'
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
for(var/mob/living/carbon/human/perp in view(T))
|
||||
if(perp.wear_id)
|
||||
client.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
|
||||
var/perpname = "wot"
|
||||
perp.sec_img.icon_state = "hud[ckey(perp:wear_id:GetJobName())]"
|
||||
client.images += perp.sec_img
|
||||
var/perpname = "wot no name?"
|
||||
if(istype(perp.wear_id,/obj/item/weapon/card/id))
|
||||
perpname = perp.wear_id:registered_name
|
||||
else if(istype(perp.wear_id,/obj/item/device/pda))
|
||||
@@ -21,17 +21,19 @@
|
||||
if (E.fields["name"] == perpname)
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
|
||||
client.images += image(tempHud,perp,"hudwanted")
|
||||
perp.sec2_img.icon_state = "hudwanted"
|
||||
client.images += perp.sec2_img
|
||||
break
|
||||
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
|
||||
client.images += image(tempHud,perp,"hudprisoner")
|
||||
perp.sec2_img.icon_state = "hudprisoner"
|
||||
client.images += perp.sec2_img
|
||||
break
|
||||
else
|
||||
client.images += image(tempHud,perp,"hudunknown")
|
||||
perp.sec_img.icon_state = "hudunknown"
|
||||
client.images += perp.sec_img
|
||||
|
||||
/mob/living/silicon/pai/proc/medicalHUD()
|
||||
if(client)
|
||||
var/icon/tempHud = 'hud.dmi'
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
for(var/mob/living/carbon/human/patient in view(T))
|
||||
|
||||
@@ -40,15 +42,17 @@
|
||||
if(!D.hidden[SCANNER])
|
||||
foundVirus = 1
|
||||
|
||||
client.images += image(tempHud,patient,"hud[RoundHealth(patient.health)]")
|
||||
patient.health_img.icon_state = "hud[RoundHealth(patient.health)]"
|
||||
client.images += patient.health_img
|
||||
if(patient.stat == 2)
|
||||
client.images += image(tempHud,patient,"huddead")
|
||||
patient.med_img.icon_state = "huddead"
|
||||
else if(patient.alien_egg_flag)
|
||||
client.images += image(tempHud,patient,"hudxeno")
|
||||
patient.med_img.icon_state = "hudxeno"
|
||||
else if(foundVirus)
|
||||
client.images += image(tempHud,patient,"hudill")
|
||||
patient.med_img.icon_state = "hudill"
|
||||
else
|
||||
client.images += image(tempHud,patient,"hudhealthy")
|
||||
patient.med_img.icon_state = "hudhealthy"
|
||||
client.images += patient.med_img
|
||||
|
||||
/mob/living/silicon/pai/proc/RoundHealth(health)
|
||||
switch(health)
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
// Recruiting observers to play as pAIs
|
||||
|
||||
var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
|
||||
/datum/paiCandidate
|
||||
var
|
||||
name
|
||||
key
|
||||
description
|
||||
role
|
||||
comments
|
||||
ready = 0
|
||||
var/name
|
||||
var/key
|
||||
var/description
|
||||
var/role
|
||||
var/comments
|
||||
var/ready = 0
|
||||
|
||||
|
||||
|
||||
@@ -217,4 +218,4 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
if(response == "Yes")
|
||||
recruitWindow(C.mob)
|
||||
else if (response == "Never for this round")
|
||||
C.be_pai = 0
|
||||
C.be_pai = 0
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/robot_module
|
||||
name = "robot module"
|
||||
icon = 'module.dmi'
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
|
||||
// fun if you want to typecast humans/monkeys/etc without writing long path-filled lines.
|
||||
/proc/ishuman(A)
|
||||
@@ -212,10 +214,10 @@ proc/hasorgans(A)
|
||||
|
||||
proc/slur(phrase)
|
||||
phrase = html_decode(phrase)
|
||||
var
|
||||
leng=lentext(phrase)
|
||||
counter=lentext(phrase)
|
||||
newphrase="";newletter=""
|
||||
var/leng=lentext(phrase)
|
||||
var/counter=lentext(phrase)
|
||||
var/newphrase=""
|
||||
var/newletter=""
|
||||
while(counter>=1)
|
||||
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
|
||||
if(rand(1,3)==3)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(air_group || (height==0)) return 1
|
||||
|
||||
@@ -223,8 +225,7 @@
|
||||
if(mob.stat==2) return
|
||||
|
||||
if(isAI(mob)) return AIMove(n,direct,mob)
|
||||
|
||||
if(mob.monkeyizing) return//This is sota the goto stop mobs from moving var
|
||||
if(mob.monkeyizing) return //This is sota the goto stop mobs from moving var
|
||||
|
||||
if(mob.incorporeal_move)//Move though walls
|
||||
Process_Incorpmove(direct)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/mob/new_player
|
||||
var/datum/preferences/preferences = null
|
||||
var/ready = 0
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
#define UI_OLD 0
|
||||
#define UI_NEW 1
|
||||
|
||||
@@ -29,18 +31,17 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
|
||||
"infested monkey" = ispath(text2path("/datum/game_mode/monkey")),
|
||||
)
|
||||
*/
|
||||
var/const
|
||||
BE_TRAITOR =(1<<0)
|
||||
BE_OPERATIVE =(1<<1)
|
||||
BE_CHANGELING=(1<<2)
|
||||
BE_WIZARD =(1<<3)
|
||||
BE_MALF =(1<<4)
|
||||
BE_REV =(1<<5)
|
||||
BE_ALIEN =(1<<6)
|
||||
BE_CULTIST =(1<<7)
|
||||
BE_MONKEY =(1<<8)
|
||||
BE_PAI =(1<<9)
|
||||
BE_MEME =(1<<10)
|
||||
var/const/BE_TRAITOR =(1<<0)
|
||||
var/const/BE_OPERATIVE =(1<<1)
|
||||
var/const/BE_CHANGELING=(1<<2)
|
||||
var/const/BE_WIZARD =(1<<3)
|
||||
var/const/BE_MALF =(1<<4)
|
||||
var/const/BE_REV =(1<<5)
|
||||
var/const/BE_ALIEN =(1<<6)
|
||||
var/const/BE_CULTIST =(1<<7)
|
||||
var/const/BE_MONKEY =(1<<8)
|
||||
var/const/BE_PAI =(1<<9)
|
||||
var/const/BE_MEME =(1<<10)
|
||||
|
||||
|
||||
|
||||
@@ -1093,4 +1094,4 @@ datum/preferences
|
||||
character.disabilities = disabilities
|
||||
|
||||
#undef UI_OLD
|
||||
#undef UI_NEW
|
||||
#undef UI_NEW
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/datum/organ
|
||||
var
|
||||
name = "organ"
|
||||
mob/living/carbon/human/owner = null
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
list/datum/autopsy_data/autopsy_data = list()
|
||||
list/trace_chemicals = list() // traces of chemicals in the organ,
|
||||
/datum/organ
|
||||
var/name = "organ"
|
||||
var/mob/living/carbon/human/owner = null
|
||||
|
||||
var/list/datum/autopsy_data/autopsy_data = list()
|
||||
var/list/trace_chemicals = list() // traces of chemicals in the organ,
|
||||
// links chemical IDs to number of ticks for which they'll stay in the blood
|
||||
|
||||
|
||||
@@ -15,12 +16,11 @@
|
||||
return 0
|
||||
|
||||
/datum/autopsy_data
|
||||
var
|
||||
weapon = null
|
||||
pretend_weapon = null
|
||||
damage = 0
|
||||
hits = 0
|
||||
time_inflicted = 0
|
||||
var/weapon = null
|
||||
var/pretend_weapon = null
|
||||
var/damage = 0
|
||||
var/hits = 0
|
||||
var/time_inflicted = 0
|
||||
|
||||
proc/copy()
|
||||
var/datum/autopsy_data/W = new()
|
||||
@@ -36,38 +36,37 @@
|
||||
****************************************************/
|
||||
/datum/organ/external
|
||||
name = "external"
|
||||
var
|
||||
icon_name = null
|
||||
body_part = null
|
||||
var/icon_name = null
|
||||
var/body_part = null
|
||||
|
||||
damage_state = "00"
|
||||
brute_dam = 0
|
||||
burn_dam = 0
|
||||
bandaged = 0
|
||||
max_damage = 0
|
||||
max_size = 0
|
||||
tmp/list/obj/item/weapon/implant/implant = list()
|
||||
var/damage_state = "00"
|
||||
var/brute_dam = 0
|
||||
var/burn_dam = 0
|
||||
var/bandaged = 0
|
||||
var/max_damage = 0
|
||||
var/max_size = 0
|
||||
var/tmp/list/obj/item/weapon/implant/implant = list()
|
||||
|
||||
display_name
|
||||
tmp/list/wounds = list()
|
||||
tmp/bleeding = 0
|
||||
tmp/perma_injury = 0
|
||||
tmp/perma_dmg = 0
|
||||
tmp/broken = 0
|
||||
tmp/destroyed = 0
|
||||
tmp/destspawn = 0 //Has it spawned the broken limb?
|
||||
tmp/gauzed = 0 //Has the missing limb been patched?
|
||||
tmp/robot = 0 //ROBOT ARM MAN!
|
||||
tmp/cutaway = 0 //First part of limb reattachment.
|
||||
tmp/attachable = 0 //Can limb be attached?
|
||||
min_broken_damage = 30
|
||||
datum/organ/external/parent
|
||||
list/datum/organ/external/children
|
||||
damage_msg = "\red You feel a intense pain"
|
||||
var/display_name
|
||||
var/tmp/list/wounds = list()
|
||||
var/tmp/bleeding = 0
|
||||
var/tmp/perma_injury = 0
|
||||
var/tmp/perma_dmg = 0
|
||||
var/tmp/broken = 0
|
||||
var/tmp/destroyed = 0
|
||||
var/tmp/destspawn = 0 //Has it spawned the broken limb?
|
||||
var/tmp/gauzed = 0 //Has the missing limb been patched?
|
||||
var/tmp/robot = 0 //ROBOT ARM MAN!
|
||||
var/tmp/cutaway = 0 //First part of limb reattachment.
|
||||
var/tmp/attachable = 0 //Can limb be attached?
|
||||
var/min_broken_damage = 30
|
||||
var/datum/organ/external/parent
|
||||
var/list/datum/organ/external/children
|
||||
var/damage_msg = "\red You feel a intense pain"
|
||||
|
||||
var/open = 0
|
||||
var/stage = 0
|
||||
var/wound = 0
|
||||
var/open = 0
|
||||
var/stage = 0
|
||||
var/wound = 0
|
||||
|
||||
New(mob/living/carbon/H)
|
||||
..(H)
|
||||
@@ -602,4 +601,4 @@
|
||||
INTERNAL ORGANS
|
||||
****************************************************/
|
||||
/datum/organ/internal
|
||||
name = "internal"
|
||||
name = "internal"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/paper
|
||||
name = "paper"
|
||||
gender = PLURAL
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/paper_bin
|
||||
name = "paper bin"
|
||||
icon = 'bureaucracy.dmi'
|
||||
@@ -8,10 +10,9 @@
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
pressure_resistance = 10
|
||||
var
|
||||
amount = 30 //How much paper is in the bin.
|
||||
list/papers = new/list() //List of papers put in the bin for reference.
|
||||
sealed = 1 //If it's brandnew and unopened, it's sealed.
|
||||
var/amount = 30 //How much paper is in the bin.
|
||||
var/list/papers = new/list() //List of papers put in the bin for reference.
|
||||
var/sealed = 1 //If it's brandnew and unopened, it's sealed.
|
||||
|
||||
MouseDrop(mob/user as mob)
|
||||
if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
|
||||
@@ -86,4 +87,4 @@
|
||||
if(amount < 1)
|
||||
icon_state = "paper_bin0"
|
||||
else
|
||||
icon_state = "paper_bin1"
|
||||
icon_state = "paper_bin1"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/machinery/photocopier
|
||||
name = "Photocopier"
|
||||
icon = 'library.dmi'
|
||||
@@ -8,11 +10,10 @@
|
||||
idle_power_usage = 30
|
||||
active_power_usage = 200
|
||||
power_channel = EQUIP
|
||||
var
|
||||
obj/item/weapon/paper/copy = null //what's in the copier!
|
||||
copies = 1 //how many copies to print!
|
||||
toner = 30 //how much toner is left! woooooo~
|
||||
maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
|
||||
var/obj/item/weapon/paper/copy = null //what's in the copier!
|
||||
var/copies = 1 //how many copies to print!
|
||||
var/toner = 30 //how much toner is left! woooooo~
|
||||
var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier!
|
||||
|
||||
attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
@@ -132,4 +133,4 @@
|
||||
|
||||
/obj/item/device/toner
|
||||
name = "toner cartridge"
|
||||
icon_state = "tonercartridge"
|
||||
icon_state = "tonercartridge"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/machinery/computer/am_engine
|
||||
name = "Antimatter Engine Console"
|
||||
icon = 'stationobjs.dmi'
|
||||
@@ -8,10 +10,9 @@
|
||||
var/obj/machinery/power/am_engine/engine/connected_E = null
|
||||
var/obj/machinery/power/am_engine/injector/connected_I = null
|
||||
var/state = STATE_DEFAULT
|
||||
var/const
|
||||
STATE_DEFAULT = 1
|
||||
STATE_INJECTOR = 2
|
||||
STATE_ENGINE = 3
|
||||
var/const/STATE_DEFAULT = 1
|
||||
var/const/STATE_INJECTOR = 2
|
||||
var/const/STATE_ENGINE = 3
|
||||
|
||||
/obj/machinery/computer/am_engine/New()
|
||||
..()
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
|
||||
//Baseline portable generator. Has all the default handling. Not intended to be used on it's own (since it generates unlimited power).
|
||||
/obj/machinery/power/port_gen/pacman2
|
||||
name = "Pacman II"
|
||||
desc = "P.A.C.M.A.N. type II portable generator. Uses liquid plasma as a fuel source."
|
||||
power_gen = 4500
|
||||
var
|
||||
obj/item/weapon/tank/plasma/P = null
|
||||
board_path = "/obj/item/weapon/circuitboard/pacman2"
|
||||
emagged = 0
|
||||
heat = 0
|
||||
var/obj/item/weapon/tank/plasma/P = null
|
||||
var/board_path = "/obj/item/weapon/circuitboard/pacman2"
|
||||
var/emagged = 0
|
||||
var/heat = 0
|
||||
/*
|
||||
process()
|
||||
if(P)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/* new portable generator - work in progress
|
||||
|
||||
/obj/machinery/power/port_gen
|
||||
@@ -320,4 +322,4 @@ display round(lastgen) and plasmatank amount
|
||||
time_per_sheet = 30
|
||||
board_path = "/obj/item/weapon/circuitboard/pacman/industrial"
|
||||
overheat()
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
explosion(src.loc, 4, 4, 4, -1)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
|
||||
/obj/machinery/power/rad_collector
|
||||
name = "Radiation Collector Array"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/machinery/containment_field
|
||||
name = "Containment Field"
|
||||
desc = "An energy field."
|
||||
@@ -7,9 +9,8 @@
|
||||
density = 0
|
||||
unacidable = 1
|
||||
use_power = 0
|
||||
var
|
||||
obj/machinery/field_generator/FG1 = null
|
||||
obj/machinery/field_generator/FG2 = null
|
||||
var/obj/machinery/field_generator/FG1 = null
|
||||
var/obj/machinery/field_generator/FG2 = null
|
||||
|
||||
New()
|
||||
spawn(1)
|
||||
@@ -92,4 +93,4 @@
|
||||
return 0
|
||||
FG1 = master1
|
||||
FG2 = master2
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/machinery/emitter
|
||||
name = "Emitter"
|
||||
desc = "A heavy duty industrial laser"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
var/containment_fail_announced = 0
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
|
||||
/////SINGULARITY SPAWNER
|
||||
/obj/machinery/the_singularitygen/
|
||||
@@ -8,8 +10,7 @@
|
||||
anchored = 0
|
||||
density = 1
|
||||
use_power = 0
|
||||
var
|
||||
energy = 0
|
||||
var/energy = 0
|
||||
|
||||
//////////////////////Singularity gen START
|
||||
|
||||
@@ -56,4 +57,4 @@
|
||||
for (var/obj/X in orange(4,T)) //TODO: do we need requirement to singularity be actually _surrounded_ by field?
|
||||
if(istype(X, /obj/machinery/containment_field) || istype(X, /obj/machinery/shieldwall))
|
||||
checkpointC ++
|
||||
return checkpointC >= 20
|
||||
return checkpointC >= 20
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/effect/accelerated_particle
|
||||
name = "Accelerated Particles"
|
||||
desc = "Small things moving very fast."
|
||||
@@ -5,17 +7,16 @@
|
||||
icon_state = "particle"//Need a new icon for this
|
||||
anchored = 1
|
||||
density = 1
|
||||
var
|
||||
movement_range = 10
|
||||
energy = 10 //energy in eV
|
||||
mega_energy = 0 //energy in MeV
|
||||
frequency = 1
|
||||
ionizing = 0
|
||||
particle_type
|
||||
additional_particles = 0
|
||||
turf/target
|
||||
turf/source
|
||||
movetotarget = 1
|
||||
var/movement_range = 10
|
||||
var/energy = 10 //energy in eV
|
||||
var/mega_energy = 0 //energy in MeV
|
||||
var/frequency = 1
|
||||
var/ionizing = 0
|
||||
var/particle_type
|
||||
var/additional_particles = 0
|
||||
var/turf/target
|
||||
var/turf/source
|
||||
var/movetotarget = 1
|
||||
weak
|
||||
movement_range = 8
|
||||
energy = 5
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/*Composed of 7 parts
|
||||
3 Particle emitters
|
||||
proc
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/machinery/particle_accelerator/control_box
|
||||
name = "Particle Accelerator Control Computer"
|
||||
desc = "This controls the density of the particles."
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/structure/particle_accelerator/particle_emitter
|
||||
name = "EM Containment Grid"
|
||||
desc_holder = "This launchs the Alpha particles, might not want to stand near this end."
|
||||
icon = 'particle_accelerator.dmi'
|
||||
icon_state = "none"
|
||||
var
|
||||
fire_delay = 50
|
||||
last_shot = 0
|
||||
var/fire_delay = 50
|
||||
var/last_shot = 0
|
||||
|
||||
center
|
||||
icon_state = "emitter_center"
|
||||
@@ -46,4 +47,4 @@
|
||||
if(A)
|
||||
A.dir = src.dir
|
||||
return 1
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
var/global/list/uneatable = list(
|
||||
/turf/space,
|
||||
/obj/effect/overlay,
|
||||
|
||||
+18
-18
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
#define SOLARGENRATE 1500
|
||||
/obj/machinery/power/solar
|
||||
name = "solar panel"
|
||||
@@ -10,15 +12,14 @@
|
||||
use_power = 0
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
var
|
||||
health = 10
|
||||
id = 1
|
||||
obscured = 0
|
||||
sunfrac = 0
|
||||
adir = SOUTH
|
||||
ndir = SOUTH
|
||||
turn_angle = 0
|
||||
obj/machinery/power/solar_control/control = null
|
||||
var/health = 10
|
||||
var/id = 1
|
||||
var/obscured = 0
|
||||
var/sunfrac = 0
|
||||
var/adir = SOUTH
|
||||
var/ndir = SOUTH
|
||||
var/turn_angle = 0
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
proc
|
||||
healthcheck()
|
||||
updateicon()
|
||||
@@ -162,15 +163,14 @@
|
||||
use_power = 1
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 20
|
||||
var
|
||||
id = 1
|
||||
cdir = 0
|
||||
gen = 0
|
||||
lastgen = 0
|
||||
track = 2 // 0= off 1=timed 2=auto (tracker)
|
||||
trackrate = 600 // 300-900 seconds
|
||||
trackdir = 1 // 0 =CCW, 1=CW
|
||||
nexttime = 0
|
||||
var/id = 1
|
||||
var/cdir = 0
|
||||
var/gen = 0
|
||||
var/lastgen = 0
|
||||
var/track = 2 // 0= off 1=timed 2=auto (tracker)
|
||||
var/trackrate = 600 // 300-900 seconds
|
||||
var/trackdir = 1 // 0 =CCW, 1=CW
|
||||
var/nexttime = 0
|
||||
proc
|
||||
updateicon()
|
||||
tracker_update(var/angle)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/ammo_casing
|
||||
name = "bullet casing"
|
||||
desc = "A bullet casing."
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/energy
|
||||
icon_state = "energy"
|
||||
name = "energy gun"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
icon_state = "energystun100"
|
||||
item_state = "energystun100"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/projectile
|
||||
desc = "A classic revolver. Uses 357 ammo"
|
||||
name = "revolver"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump
|
||||
name = "shotgun"
|
||||
desc = "Useful for sweeping alleys."
|
||||
@@ -129,4 +131,4 @@
|
||||
slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
|
||||
name = "sawn-off shotgun"
|
||||
desc = "Omar's coming!"
|
||||
user << "<span class='warning'>You shorten the barrel of \the [src]!</span>"
|
||||
user << "<span class='warning'>You shorten the barrel of \the [src]!</span>"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/*
|
||||
#define BRUTE "brute"
|
||||
#define BURN "burn"
|
||||
@@ -19,33 +21,32 @@
|
||||
flags = FPRINT | TABLEPASS
|
||||
pass_flags = PASSTABLE
|
||||
mouse_opacity = 0
|
||||
var
|
||||
bumped = 0 //Prevents it from hitting more than one guy at once
|
||||
def_zone = "" //Aiming at
|
||||
mob/firer = null//Who shot it
|
||||
silenced = 0 //Attack message
|
||||
yo = null
|
||||
xo = null
|
||||
current = null
|
||||
turf/original = null // the original turf clicked
|
||||
turf/starting = null // the projectile's starting turf
|
||||
var/bumped = 0 //Prevents it from hitting more than one guy at once
|
||||
var/def_zone = "" //Aiming at
|
||||
var/mob/firer = null//Who shot it
|
||||
var/silenced = 0 //Attack message
|
||||
var/yo = null
|
||||
var/xo = null
|
||||
var/current = null
|
||||
var/turf/original = null // the original turf clicked
|
||||
var/turf/starting = null // the projectile's starting turf
|
||||
|
||||
p_x = 16
|
||||
p_y = 16 // the pixel location of the tile that the player clicked. Default is the center
|
||||
var/p_x = 16
|
||||
var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center
|
||||
|
||||
damage = 10
|
||||
damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
|
||||
nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
||||
flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
|
||||
projectile_type = "/obj/item/projectile"
|
||||
var/damage = 10
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
|
||||
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
||||
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
|
||||
var/projectile_type = "/obj/item/projectile"
|
||||
//Effects
|
||||
stun = 0
|
||||
weaken = 0
|
||||
paralyze = 0
|
||||
irradiate = 0
|
||||
stutter = 0
|
||||
eyeblur = 0
|
||||
drowsy = 0
|
||||
var/stun = 0
|
||||
var/weaken = 0
|
||||
var/paralyze = 0
|
||||
var/irradiate = 0
|
||||
var/stutter = 0
|
||||
var/eyeblur = 0
|
||||
var/drowsy = 0
|
||||
|
||||
|
||||
proc/on_hit(var/atom/target, var/blocked = 0)
|
||||
@@ -154,9 +155,8 @@
|
||||
invisibility = 101 //Nope! Can't see me!
|
||||
yo = null
|
||||
xo = null
|
||||
var
|
||||
target = null
|
||||
result = 0 //To pass the message back to the gun.
|
||||
var/target = null
|
||||
var/result = 0 //To pass the message back to the gun.
|
||||
|
||||
Bump(atom/A as mob|obj|turf|area)
|
||||
if(A == firer)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
// Disposal bin
|
||||
// Holds items for disposal into pipe system
|
||||
// Draws air from turf, gradually charges internal reservoir
|
||||
@@ -986,17 +988,16 @@
|
||||
|
||||
desc = "An underfloor disposal pipe with a package sorting mechanism."
|
||||
icon_state = "pipe-j1s"
|
||||
var
|
||||
list/sortType = list()
|
||||
list/backType = list()
|
||||
backsort = 0 //For sending disposal packets to upstream destinations.
|
||||
mailsort = 0
|
||||
posdir = 0
|
||||
negdir = 0
|
||||
sortdir = 0
|
||||
service = 0
|
||||
screen = 0
|
||||
icon_state_old = null
|
||||
var/list/sortType = list()
|
||||
var/list/backType = list()
|
||||
var/backsort = 0 //For sending disposal packets to upstream destinations.
|
||||
var/mailsort = 0
|
||||
var/posdir = 0
|
||||
var/negdir = 0
|
||||
var/sortdir = 0
|
||||
var/service = 0
|
||||
var/screen = 0
|
||||
var/icon_state_old = null
|
||||
|
||||
nonsorting
|
||||
NE
|
||||
@@ -1159,11 +1160,10 @@
|
||||
name = "\improper Package Discrimination Unit"
|
||||
desc = "An underfloor disposal pipe that is racist against packages."
|
||||
icon_state = "pipe-j1s"
|
||||
var
|
||||
posdir = 0
|
||||
negdir = 0
|
||||
sortdir = 0
|
||||
screen = 0
|
||||
var/posdir = 0
|
||||
var/negdir = 0
|
||||
var/sortdir = 0
|
||||
var/screen = 0
|
||||
|
||||
|
||||
New()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
proc/unwrap()
|
||||
if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
|
||||
wrapped.loc = (get_turf(src.loc))
|
||||
wrapped.loc = (get_turf(loc))
|
||||
if(istype(wrapped, /obj/structure/closet))
|
||||
var/obj/structure/closet/O = wrapped
|
||||
O.welded = waswelded
|
||||
@@ -47,7 +47,7 @@
|
||||
if(istype(W, /obj/item/device/destTagger))
|
||||
var/obj/item/device/destTagger/O = W
|
||||
user << "\blue *TAGGED*"
|
||||
src.sortTag = O.currTag
|
||||
sortTag = O.currTag
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
switch(alert("What would you like to alter?",,"Title","Description", "Cancel"))
|
||||
@@ -56,9 +56,10 @@
|
||||
if(!str || !length(str))
|
||||
usr << "\red Invalid text."
|
||||
return
|
||||
for(var/mob/M in viewers())
|
||||
M << "\blue [user] labels [src] as [str]."
|
||||
src.name = "[src.name] ([str])"
|
||||
user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[examtext]\"",\
|
||||
"\blue You title \the [src]: \"[examtext]\"",\
|
||||
"You hear someone scribbling a note.")
|
||||
name = "[name] ([str])"
|
||||
update_icon()
|
||||
if("Description")
|
||||
var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN)
|
||||
@@ -66,8 +67,9 @@
|
||||
usr << "\red Invalid text."
|
||||
return
|
||||
examtext = str
|
||||
for(var/mob/M in viewers())
|
||||
M << "\blue [user] labels [src] with the note: [examtext]."
|
||||
user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\
|
||||
"\blue You label \the [src]: \"[examtext]\"",\
|
||||
"You hear someone scribbling a note.")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -87,11 +89,29 @@
|
||||
F.opened = 0
|
||||
break
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
if(2.0)
|
||||
if(prob(10))
|
||||
del(src)
|
||||
else
|
||||
wrapped.loc = get_turf(src)
|
||||
wrapped:welded = waswelded
|
||||
del(src)
|
||||
return
|
||||
if(3.0)
|
||||
wrapped.loc = get_turf(src)
|
||||
wrapped:welded = waswelded
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/smallDelivery
|
||||
desc = "A small wrapped package."
|
||||
name = "small parcel"
|
||||
icon = 'storage.dmi'
|
||||
icon_state = "deliverycrateSmall"
|
||||
icon_state = "deliverycrateSmall1"
|
||||
var/tmp/obj/item/wrapped = null
|
||||
var/sortTag = null
|
||||
flags = FPRINT
|
||||
@@ -99,9 +119,8 @@
|
||||
|
||||
|
||||
attack_self(mob/user)
|
||||
if (src.wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
|
||||
src.wrapped.loc = (get_turf(src.loc))
|
||||
|
||||
if (wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
|
||||
wrapped.loc = (get_turf(loc))
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -116,7 +135,7 @@
|
||||
if(istype(W, /obj/item/device/destTagger))
|
||||
var/obj/item/device/destTagger/O = W
|
||||
user << "\blue *TAGGED*"
|
||||
src.sortTag = O.currTag
|
||||
sortTag = O.currTag
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
switch(alert("What would you like to alter?",,"Title","Description", "Cancel"))
|
||||
@@ -125,9 +144,10 @@
|
||||
if(!str || !length(str))
|
||||
usr << "\red Invalid text."
|
||||
return
|
||||
for(var/mob/M in viewers())
|
||||
M << "\blue [user] labels [src] as [str]."
|
||||
src.name = "[src.name] ([str])"
|
||||
user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[examtext]\"",\
|
||||
"\blue You title \the [src]: \"[examtext]\"",\
|
||||
"You hear someone scribbling a note.")
|
||||
name = "[name] ([str])"
|
||||
update_icon()
|
||||
if("Description")
|
||||
var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN)
|
||||
@@ -135,8 +155,9 @@
|
||||
usr << "\red Invalid text."
|
||||
return
|
||||
examtext = str
|
||||
for(var/mob/M in viewers())
|
||||
M << "\blue [user] labels [src] with the note: [examtext]."
|
||||
user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\
|
||||
"\blue You label \the [src]: \"[examtext]\"",\
|
||||
"You hear someone scribbling a note.")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -149,6 +170,22 @@
|
||||
..()
|
||||
return
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
if(2.0)
|
||||
if(prob(40))
|
||||
del(src)
|
||||
else
|
||||
wrapped.loc = get_turf(src)
|
||||
del(src)
|
||||
return
|
||||
if(3.0)
|
||||
wrapped.loc = get_turf(src)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/packageWrap
|
||||
name = "package wrapper"
|
||||
icon = 'items.dmi'
|
||||
@@ -158,6 +195,8 @@
|
||||
|
||||
|
||||
afterattack(var/obj/target as obj, mob/user as mob)
|
||||
if(!in_range(target,user))
|
||||
return
|
||||
if(!(istype(target, /obj))) //this really shouldn't be necessary (but it is). -Pete
|
||||
return
|
||||
if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack) || istype(target,/obj/item/smallDelivery))
|
||||
@@ -167,43 +206,54 @@
|
||||
if(target in user)
|
||||
return
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='blue'>Has used [src.name] on \ref[target]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='blue'>Has used \a [src] on \ref[target]</font>")
|
||||
|
||||
if (istype(target, /obj/item))
|
||||
var/obj/item/O = target
|
||||
if (src.amount > 1)
|
||||
if (amount > 1)
|
||||
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up!
|
||||
if(!istype(O.loc, /turf))
|
||||
if(user.client)
|
||||
user.client.screen -= O
|
||||
P.wrapped = O
|
||||
O.loc = P
|
||||
src.amount -= 1
|
||||
amount -= 1
|
||||
P.w_class = O.w_class
|
||||
P.icon_state = "deliverycrateSmall[P.w_class]"
|
||||
user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\
|
||||
"\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\
|
||||
"You hear someone taping paper around a small object.")
|
||||
else if (istype(target, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/O = target
|
||||
if (src.amount > 3 && !O.opened)
|
||||
if (amount > 3 && !O.opened)
|
||||
var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc))
|
||||
P.icon_state = "deliverycrate"
|
||||
P.wrapped = O
|
||||
O.loc = P
|
||||
src.amount -= 3
|
||||
else if(src.amount < 3)
|
||||
amount -= 3
|
||||
user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\
|
||||
"\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\
|
||||
"You hear someone pondering a problem, using a tape measure, and taping paper around a large object.")
|
||||
else if(amount < 3)
|
||||
user << "\blue You need more paper."
|
||||
else if (istype (target, /obj/structure/closet))
|
||||
var/obj/structure/closet/O = target
|
||||
if (src.amount > 3 && !O.opened)
|
||||
if (amount > 3 && !O.opened)
|
||||
var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc))
|
||||
P.wrapped = O
|
||||
P.waswelded = O.welded
|
||||
O.welded = 1
|
||||
O.loc = P
|
||||
src.amount -= 3
|
||||
else if(src.amount < 3)
|
||||
amount -= 3
|
||||
user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\
|
||||
"\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\
|
||||
"You hear someone pondering a problem, using a tape measure, and taping paper around a large object.")
|
||||
else if(amount < 3)
|
||||
user << "\blue You need more paper."
|
||||
else
|
||||
user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!"
|
||||
if (src.amount <= 0)
|
||||
new /obj/item/weapon/c_tube( src.loc )
|
||||
if (amount <= 0)
|
||||
new /obj/item/weapon/c_tube( loc )
|
||||
del(src)
|
||||
return
|
||||
return
|
||||
@@ -276,15 +326,15 @@
|
||||
|
||||
Topic(href, href_list)
|
||||
usr.machine = src
|
||||
src.add_fingerprint(usr)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["nextTag"])
|
||||
var/n = text2num(href_list["nextTag"])
|
||||
if(n > locationList.len)
|
||||
var/t1 = input("Which tag?","Tag") as null|text
|
||||
if(t1)
|
||||
src.currTag = t1
|
||||
currTag = t1
|
||||
else
|
||||
src.currTag = locationList[n]
|
||||
currTag = locationList[n]
|
||||
if(istype(loc,/mob))
|
||||
interact(loc)
|
||||
else
|
||||
@@ -292,18 +342,15 @@
|
||||
return
|
||||
|
||||
attack(target as obj, mob/user as mob)
|
||||
if (istype(target, /obj/structure/bigDelivery))
|
||||
user << "\blue *TAGGED*"
|
||||
var/obj/structure/bigDelivery/O = target
|
||||
O.sortTag = src.currTag
|
||||
O.update_icon()
|
||||
else if (istype(target, /obj/item/smallDelivery))
|
||||
user << "\blue *TAGGED*"
|
||||
var/obj/item/smallDelivery/O = target
|
||||
O.sortTag = src.currTag
|
||||
O.update_icon()
|
||||
if (istype(target, /obj/structure/bigDelivery) || istype(target, /obj/item/smallDelivery))
|
||||
user.visible_message("\The [user] tags \a [target] with \a [src].", "\blue *TAGGED*",\
|
||||
"You hear a short electronic click-shunk, like something being printed on a surface.")
|
||||
target:sortTag = currTag
|
||||
target:update_icon()
|
||||
else
|
||||
user << "\blue You can only tag properly wrapped delivery packages!"
|
||||
user.visible_message("\The [user] tries to tag \a [target], but their [src] refuses to work on anything but packages.",\
|
||||
"\blue Your [src] flashes: \"You can only tag properly wrapped delivery packages!\"",\
|
||||
"You hear a short click then a sad synthesized noise.")
|
||||
return
|
||||
|
||||
/obj/machinery/disposal/deliveryChute
|
||||
@@ -312,6 +359,7 @@
|
||||
density = 0
|
||||
icon_state = "intake"
|
||||
var/currentlyFlushing = 0
|
||||
var/defaultDestination = "Disposals"
|
||||
|
||||
interact()
|
||||
return
|
||||
@@ -323,7 +371,7 @@
|
||||
else if (istype(AM, /mob))
|
||||
var/mob/M = AM
|
||||
M.loc = src
|
||||
src.flush()
|
||||
flush()
|
||||
|
||||
flush()
|
||||
flushing = 1
|
||||
@@ -334,13 +382,13 @@
|
||||
for(var/obj/structure/bigDelivery/O in src)
|
||||
deliveryCheck = 1
|
||||
if(!O.sortTag)
|
||||
O.sortTag = "Disposals"
|
||||
O.sortTag = defaultDestination
|
||||
for(var/obj/item/smallDelivery/O in src)
|
||||
deliveryCheck = 1
|
||||
if (!O.sortTag)
|
||||
O.sortTag = "Disposals"
|
||||
O.sortTag = defaultDestination
|
||||
if(deliveryCheck == 0)
|
||||
H.destinationTag = "Disposals"
|
||||
H.destinationTag = defaultDestination
|
||||
|
||||
|
||||
H.init(src) // copy the contents of disposer to holder
|
||||
@@ -367,11 +415,11 @@
|
||||
return
|
||||
|
||||
CanPass(atom/A, turf/T)
|
||||
if(istype(A, /mob/living)) // You Shall Not Pass!
|
||||
if(istype(A, /mob/living)) // You Shall Get Sucked In And Killed!
|
||||
var/mob/living/M = A
|
||||
HasEntered(M)
|
||||
return 0
|
||||
if(istype(A, /obj)) // You Shall Not Pass!
|
||||
if(istype(A, /obj)) // You Shall Get Mailed!
|
||||
var/obj/M = A
|
||||
HasEntered(M)
|
||||
return 1
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/*///////////////Circuit Imprinter (By Darem)////////////////////////
|
||||
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
|
||||
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/***************************************************************
|
||||
** Design Datums **
|
||||
** All the data for building stuff and tracking reliability. **
|
||||
@@ -39,18 +41,17 @@ other types of metals and chemistry for reagents).
|
||||
|
||||
datum
|
||||
design //Datum for object designs, used in construction
|
||||
var
|
||||
name = "Name" //Name of the created object.
|
||||
desc = "Desc" //Description of the created object.
|
||||
id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
||||
list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements.
|
||||
reliability_mod = 0 //Reliability modifier of the device at it's starting point.
|
||||
reliability_base = 100 //Base reliability of a device before modifiers.
|
||||
reliability = 100 //Reliability of the device.
|
||||
build_type = null //Flag as to what kind machine the design is built in. See defines.
|
||||
list/materials = list() //List of materials. Format: "id" = amount.
|
||||
build_path = "" //The file path of the object that gets created
|
||||
locked = 0 //If true it will spawn inside a lockbox with currently sec access
|
||||
var/name = "Name" //Name of the created object.
|
||||
var/desc = "Desc" //Description of the created object.
|
||||
var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
||||
var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements.
|
||||
var/reliability_mod = 0 //Reliability modifier of the device at it's starting point.
|
||||
var/reliability_base = 100 //Base reliability of a device before modifiers.
|
||||
var/reliability = 100 //Reliability of the device.
|
||||
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
|
||||
var/list/materials = list() //List of materials. Format: "id" = amount.
|
||||
var/build_path = "" //The file path of the object that gets created
|
||||
var/locked = 0 //If true it will spawn inside a lockbox with currently sec access
|
||||
|
||||
proc
|
||||
//A proc to calculate the reliability of a design based on tech levels and innate modifiers.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/*
|
||||
Destructive Analyzer
|
||||
|
||||
@@ -8,9 +10,8 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
/obj/machinery/r_n_d/destructive_analyzer
|
||||
name = "Destructive Analyzer"
|
||||
icon_state = "d_analyzer"
|
||||
var
|
||||
obj/item/weapon/loaded_item = null
|
||||
decon_mod = 1
|
||||
var/obj/item/weapon/loaded_item = null
|
||||
var/decon_mod = 1
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -109,4 +110,4 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
icon_state = "d20"
|
||||
g_amt = 5000
|
||||
m_amt = 5000
|
||||
origin_tech = "materials=5;plasmatech=5;syndicate=5;programming=9"*/
|
||||
origin_tech = "materials=5;plasmatech=5;syndicate=5;programming=9"*/
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/*
|
||||
Protolathe
|
||||
|
||||
@@ -11,7 +13,6 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
name = "Protolathe"
|
||||
icon_state = "protolathe"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/max_material_storage = 100000 //All this could probably be done better with a list but meh.
|
||||
var/m_amount = 0.0
|
||||
var/g_amount = 0.0
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/*
|
||||
Research and Development (R&D) Console
|
||||
|
||||
@@ -892,4 +894,4 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
if(linked_imprinter.diamond_amount >= 3750) dat += "<A href='?src=\ref[src];imprinter_ejectsheet=diamond;imprinter_ejectsheet_amt=50'>(Max Sheets)</A>"
|
||||
|
||||
user << browse("<TITLE>Research and Development Console</TITLE><HR>[dat]", "window=rdconsole;size=575x400")
|
||||
onclose(user, "rdconsole")
|
||||
onclose(user, "rdconsole")
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
//All devices that link into the R&D console fall into thise type for easy identification and some shared procs.
|
||||
|
||||
|
||||
@@ -6,17 +8,16 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
var
|
||||
busy = 0
|
||||
hacked = 0
|
||||
disabled = 0
|
||||
shocked = 0
|
||||
list/wires = list()
|
||||
hack_wire
|
||||
disable_wire
|
||||
shock_wire
|
||||
opened = 0
|
||||
obj/machinery/computer/rdconsole/linked_console
|
||||
var/busy = 0
|
||||
var/hacked = 0
|
||||
var/disabled = 0
|
||||
var/shocked = 0
|
||||
var/list/wires = list()
|
||||
var/hack_wire
|
||||
var/disable_wire
|
||||
var/shock_wire
|
||||
var/opened = 0
|
||||
var/obj/machinery/computer/rdconsole/linked_console
|
||||
|
||||
New()
|
||||
..()
|
||||
@@ -102,4 +103,4 @@
|
||||
if(src.shock_wire == temp_wire)
|
||||
src.shocked = !src.shocked
|
||||
src.shock(usr,50)
|
||||
src.updateUsrDialog()
|
||||
src.updateUsrDialog()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/*
|
||||
General Explination:
|
||||
The research datum is the "folder" where all the research information is stored in a R&D console. It's also a holder for all the
|
||||
@@ -45,12 +47,11 @@ research holder datum.
|
||||
***************************************************************/
|
||||
|
||||
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
|
||||
var
|
||||
list //Datum/tech go here.
|
||||
possible_tech = list() //List of all tech in the game that players have access to (barring special events).
|
||||
known_tech = list() //List of locally known tech.
|
||||
possible_designs = list() //List of all designs (at base reliability).
|
||||
known_designs = list() //List of available designs (at base reliability).
|
||||
//Datum/tech go here.
|
||||
var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events).
|
||||
var/list/known_tech = list() //List of locally known tech.
|
||||
var/list/possible_designs = list() //List of all designs (at base reliability).
|
||||
var/list/known_designs = list() //List of available designs (at base reliability).
|
||||
|
||||
New() //Insert techs into possible_tech here. Known_tech automatically updated.
|
||||
for(var/T in typesof(/datum/tech) - /datum/tech)
|
||||
@@ -170,12 +171,11 @@ research holder datum.
|
||||
|
||||
datum
|
||||
tech //Datum of individual technologies.
|
||||
var
|
||||
name = "name" //Name of the technology.
|
||||
desc = "description" //General description of what it does and what it makes.
|
||||
id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols.
|
||||
level = 1 //A simple number scale of the research level. Level 0 = Secret tech.
|
||||
list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = #
|
||||
var/name = "name" //Name of the technology.
|
||||
var/desc = "description" //General description of what it does and what it makes.
|
||||
var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols.
|
||||
var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech.
|
||||
var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = #
|
||||
|
||||
|
||||
//Trunk Technologies (don't require any other techs and you start knowning them).
|
||||
@@ -268,4 +268,4 @@ datum
|
||||
var/datum/tech/stored
|
||||
New()
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:06
|
||||
|
||||
/obj/machinery/r_n_d/server
|
||||
name = "R&D Server"
|
||||
icon_state = "server"
|
||||
var
|
||||
datum/research/files
|
||||
health = 100
|
||||
list
|
||||
id_with_upload = list() //List of R&D consoles with upload to server access.
|
||||
id_with_download = list() //List of R&D consoles with download from server access.
|
||||
id_with_upload_string = "" //String versions for easy editing in map editor.
|
||||
id_with_download_string = ""
|
||||
server_id = 0
|
||||
heat_gen = 100
|
||||
heating_power = 40000
|
||||
delay = 10
|
||||
var/datum/research/files
|
||||
var/health = 100
|
||||
var/list/id_with_upload = list() //List of R&D consoles with upload to server access.
|
||||
var/list/id_with_download = list() //List of R&D consoles with download from server access.
|
||||
var/id_with_upload_string = "" //String versions for easy editing in map editor.
|
||||
var/id_with_download_string = ""
|
||||
var/server_id = 0
|
||||
var/heat_gen = 100
|
||||
var/heating_power = 40000
|
||||
var/delay = 10
|
||||
req_access = list(access_rd) //Only the R&D can change server settings.
|
||||
|
||||
New()
|
||||
@@ -159,13 +159,11 @@
|
||||
/obj/machinery/computer/rdservercontrol
|
||||
name = "R&D Server Controller"
|
||||
icon_state = "rdcomp"
|
||||
var
|
||||
screen = 0
|
||||
obj/machinery/r_n_d/server/temp_server
|
||||
list
|
||||
servers = list()
|
||||
consoles = list()
|
||||
badmin = 0
|
||||
var/screen = 0
|
||||
var/obj/machinery/r_n_d/server/temp_server
|
||||
var/list/servers = list()
|
||||
var/list/consoles = list()
|
||||
var/badmin = 0
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
|
||||
Reference in New Issue
Block a user