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:
Erthilo
2012-05-31 15:09:35 +01:00
189 changed files with 2489 additions and 1543 deletions
+13 -14
View File
@@ -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 += "&nbsp<b>Blood:</b><br>"
for(var/j = 1, j <= blood.len, j++)
var/list/templist2 = blood[j]
P.info += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type: [templist2[2]], DNA: [templist2[1]]<br>"
for(var/named in blood)
P.info += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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
+29 -20
View File
@@ -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
+4 -3
View File
@@ -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
+5 -4
View File
@@ -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
*/
*/
+6 -5
View File
@@ -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
+6 -5
View File
@@ -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
+8 -7
View File
@@ -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()
+5 -4
View File
@@ -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
+4 -3
View File
@@ -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
///////////////////////////////////////////////////////////////////////////////////
+10 -9
View File
@@ -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
+4 -1
View File
@@ -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
+2
View File
@@ -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'
+29 -23
View File
@@ -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
+32 -31
View File
@@ -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.
+49 -48
View File
@@ -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 @@
*/
*/
+10 -10
View File
@@ -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
+7 -5
View File
@@ -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
+34
View File
@@ -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!"
+243
View File
@@ -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
+268
View File
@@ -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),
))
*/
+2
View File
@@ -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()
+7 -6
View File
@@ -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
+12 -11
View File
@@ -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
// -------------------------------------------------------------
+4 -3
View File
@@ -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)
+17 -13
View File
@@ -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'
+6 -4
View File
@@ -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)
+3 -2
View File
@@ -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
+14 -13
View File
@@ -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
+41 -42
View File
@@ -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"
+2
View File
@@ -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
+6 -5
View File
@@ -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"
+7 -6
View File
@@ -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"
+5 -4
View File
@@ -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()
..()
+6 -5
View File
@@ -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)
+3 -1
View File
@@ -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
/*
+4 -3
View File
@@ -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
View File
@@ -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)
+2
View File
@@ -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."
+2
View File
@@ -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>"
+27 -27
View File
@@ -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)
+16 -16
View File
@@ -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()
+96 -48
View File
@@ -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
+2
View File
@@ -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
+13 -12
View File
@@ -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"*/
+2 -1
View File
@@ -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
+3 -1
View File
@@ -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")
+13 -12
View File
@@ -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()
+13 -13
View File
@@ -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)
+17 -19
View File
@@ -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(..())