I ain't gonna lie, this is a pretty big revision.

Chemistry:
     I added a new variable to each reagent called "color". It's a hexadecimal string used to give a reagent a unique color for use in future shenanigans that are in development atm. Updooted the Chemistry-Readme.dm file to include some other variables I included into the recipie system as well as this new color variable. Implementing these colors is still an ongoing effort, and yes you will be able to "blend" these colors.


Viruses:
     Nothing has been CHANGED (yet) but there is some framework for a new virus system to work alongside our current one, special thanks to Googolplexed of Baystation 12! If this weren't tied to some other things I changed, I wouldn't be committing this in the first place. While experimental, you shouldn't even notice this exists.


!!BUGFIXES!!:
     Wow, there's so many I'm having a hard time keeping track of it all!

     A bunch of runtime errors were hopefully fixed. There were some problems with slicing stuff spitting out runtime errors because an istype() was missing. The same goes for ritual tomes and some other things. Medical cyborgs were also fixed: their pills will now recharge properly and stop spitting out atrocious runtime errors. 

     It was intended for it to be possible to shoot people on top of Mulebots, but a runtime error always cut the proc off before it could execute. This has been fixed.

     There are probably some other things I'm missing, but all in all, that's about it for the bugfixes.
     


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1905 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
vageyenaman@gmail.com
2011-07-22 22:42:59 +00:00
parent c8a01f0b29
commit c9d1e3452f
21 changed files with 673 additions and 34 deletions
+12 -1
View File
@@ -135,6 +135,7 @@
verbs += /client/proc/jumptokey
verbs += /client/proc/jumptomob
verbs += /client/proc/jumptoturf
//verbs += /client/proc/givedisease
verbs += /client/proc/cmd_admin_add_freeform_ai_law
verbs += /client/proc/cmd_admin_add_random_ai_law
@@ -268,7 +269,6 @@
verbs += /client/proc/cmd_admin_ninjafy //N
//verbs += /client/proc/makepAI // -- TLE
verbs += /client/proc/respawn_character //N
verbs += /client/proc/Getmob
verbs += /client/proc/sendmob
verbs += /client/proc/Jump
@@ -1488,6 +1488,17 @@
kill_air = 1
usr << "<b>Disabled air processing.</b>"
/*
/client/proc/givedisease(var/mob/living/carbon/M in world)
set category = "Debug"
set name = "Give disease 2.0"
set desc = "Does what it says on the tin"
infect_mob_random(M)
message_admins("\blue [src.ckey] infected [M.real_name]([M.ckey]) with a random disease 2.0")
*/
/client/proc/unstealthadmin()
set name = "Toggle admin verb visibility"
set category = "Admin"
@@ -156,6 +156,11 @@ I kind of like the right click only--the window version can get a little confusi
var/obj/selection = input("Select a destination.", "Duct System") in choices
var/selection_position = choices.Find(selection)
if(loc==startloc)
// Hacky way of hopefully preventing a runtime error from happening
if(vents.len < selection_position)
vents.len = selection_position
var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection_position]
if(target_vent)
for(var/mob/O in viewers(src, null))
@@ -252,7 +252,7 @@
var/obj/item/weapon.grab/G = r_hand
if ((G.state == 3 && get_dir(src, A) == dir))
safe = G.affecting
if (safe)
if (safe && A)
return safe.bullet_act(A)
var/absorb
@@ -864,6 +864,9 @@
if(!D.hidden[SCANNER])
foundVirus++
if(patient.virus2)
foundVirus++
client.images += image(tempHud,patient,"hud[RoundHealth(patient.health)]")
if(patient.stat == 2)
client.images += image(tempHud,patient,"huddead")
@@ -1013,6 +1016,20 @@
if(bodytemperature > 406)
for(var/datum/disease/D in viruses)
D.cure()
if(!virus2)
for(var/mob/living/carbon/M in oviewers(4,src))
if(M.virus2)
infect_virus2(src,M.virus2)
for(var/obj/decal/cleanable/blood/B in view(4, src))
if(B.virus2)
infect_virus2(src,B.virus2)
else
virus2.activate(src)
return
@@ -569,6 +569,17 @@
D.cure()
return
if(!virus2)
for(var/mob/living/carbon/M in oviewers(4,src))
if(M.virus2)
infect_virus2(src,M.virus2)
for(var/obj/decal/cleanable/blood/B in view(4, src))
if(B.virus2)
infect_virus2(src,B.virus2)
else
virus2.activate(src)
check_if_buckled()
if (src.buckled)
src.lying = istype(src.buckled, /obj/stool/bed) || istype(src.buckled, /obj/machinery/conveyor)
@@ -127,14 +127,15 @@ obj/item/weapon/robot_module/syndicate
var/list/what = list (
/obj/item/weapon/reagent_containers/pill/kelotane,
/obj/item/weapon/reagent_containers/pill/dexalin,
/obj/item/weapon/reagent_containers/pill/cyanide,
)
for (var/T in what)
if (!(locate(T) in src.modules))
src.modules -= null
var/O = new T(src)
src.modules += O
O:amount = 1
if (R.emagged && !src.emag) //thanks to cyborg-900 for uncovering this
src.emag = new /obj/item/weapon/reagent_containers/pill/cyanide(src)
/obj/item/weapon/robot_module/medical/New()
+1 -1
View File
@@ -148,7 +148,7 @@ mob/new_player
return 1
if(href_list["ready"])
if (!usr.client.authenticated)
if (!src.client.authenticated)
src << "You are not authorized to enter the game."
return
+154
View File
@@ -0,0 +1,154 @@
/obj/machinery/computer/curer
name = "Cure Research Machine"
icon = 'computer.dmi'
icon_state = "dna"
// brightnessred = 0
// brightnessgreen = 2 //Used for multicoloured lighting on BS12
// brightnessblue = 2
var/curing
var/virusing
circuit = "/obj/item/weapon/circuitboard/mining"
var/obj/item/weapon/virusdish/dish = null
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob)
/*if(istype(I, /obj/item/weapon/screwdriver))
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)
user << "\blue The broken glass falls out."
var/obj/computerframe/A = new /obj/computerframe( src.loc )
new /obj/item/weapon/shard( src.loc )
var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
A.state = 3
A.icon_state = "3"
A.anchored = 1
del(src)
else
user << "\blue You disconnect the monitor."
var/obj/computerframe/A = new /obj/computerframe( src.loc )
var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
for (var/obj/C in src)
C.loc = src.loc
A.circuit = M
A.state = 4
A.icon_state = "4"
A.anchored = 1
del(src)*/
if(istype(I,/obj/item/weapon/virusdish))
var/mob/living/carbon/c = user
if(!dish)
dish = I
c.drop_item()
I.loc = src
//else
src.attack_hand(user)
return
/obj/machinery/computer/curer/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/curer/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
return
/obj/machinery/computer/curer/attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
var/dat
if(curing)
dat = "Antibody production in progress"
else if(virusing)
dat = "Virus production in progress"
else if(dish)
dat = "Virus dish inserted"
if(dish.virus2)
if(dish.growth >= 100)
dat += "<BR><A href='?src=\ref[src];antibody=1'>Begin antibody production</a>"
dat += "<BR><A href='?src=\ref[src];virus=1'>Begin virus production</a>"
else
dat += "<BR>Insufficent cells to attempt to create cure"
else
dat += "<BR>Please check dish contents"
dat += "<BR><A href='?src=\ref[src];eject=1'>Eject disk</a>"
else
dat = "Please insert dish"
user << browse(dat, "window=computer;size=400x500")
onclose(user, "computer")
return
/obj/machinery/computer/curer/process()
..()
if(stat & (NOPOWER|BROKEN))
return
use_power(500)
src.updateDialog()
if(curing)
curing -= 1
if(curing == 0)
icon_state = "dna"
if(dish.virus2)
createcure(dish.virus2)
if(virusing)
virusing -= 1
if(virusing == 0)
icon_state = "dna"
if(dish.virus2)
createvirus(dish.virus2)
return
/obj/machinery/computer/curer/Topic(href, href_list)
if(..())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if (href_list["antibody"])
curing = 30
dish.growth -= 50
src.icon_state = "dna"
if (href_list["virus"])
virusing = 30
dish.growth -= 100
src.icon_state = "dna"
else if(href_list["eject"])
dish.loc = src.loc
dish = null
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/curer/proc/createcure(var/datum/disease2/disease/virus2)
var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc)
implanter.resistance = new /datum/disease2/resistance(dish.virus2)
if(probG("Virus curing",3))
implanter.works = 0
else
implanter.works = rand(1,2)
state("The [src.name] Buzzes")
/obj/machinery/computer/curer/proc/createvirus(var/datum/disease2/disease/virus2)
var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc)
implanter.name = "Viral implanter (MAJOR BIOHAZARD)"
implanter.virus2 = dish.virus2.getcopy()
implanter.works = 3
state("The [src.name] Buzzes")
/obj/machinery/computer/curer/proc/state(var/msg)
for(var/mob/O in hearers(src, null))
O.show_message("\icon[src] \blue [msg]", 2)
+12
View File
@@ -0,0 +1,12 @@
var/list/prob_G_list = list()
/proc/probG(var/define,var/everyother)
if(prob_G_list["[define]"])
prob_G_list["[define]"] += 1
if(prob_G_list["[define]"] == everyother)
prob_G_list["[define]"] = 0
return 1
else
(prob_G_list["[define]"]) = 0
(prob_G_list["[define]"]) = rand(1,everyother-1)
return 0