From 4f4fb38baff388c86b21c05da22e9cec05099a0a Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 13:23:23 +0100 Subject: [PATCH 01/18] Changed pin to a 4 digit number. Game year standardised to this year +544. --- code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm | 8 ++++---- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/computer/security.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/global.dm | 1 + code/modules/mob/living/carbon/human/human.dm | 8 ++++---- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm index 7fcd57eefd..724168c8c1 100644 --- a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm +++ b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm @@ -14,7 +14,7 @@ var/global/list/all_money_accounts = list() station_account = new() station_account.owner_name = "[station_name()] Station Account" station_account.account_number = rand(111111, 999999) - station_account.remote_access_pin = rand(1111, 111111) + station_account.remote_access_pin = rand(1000, 9999) station_account.money = 75000 //create an entry in the account transaction log for when it was created @@ -36,7 +36,7 @@ var/global/list/all_money_accounts = list() var/datum/money_account/department_account = new() department_account.owner_name = "[department] Account" department_account.account_number = rand(111111, 999999) - department_account.remote_access_pin = rand(1111, 111111) + department_account.remote_access_pin = rand(1000, 9999) department_account.money = 5000 //create an entry in the account transaction log for when it was created @@ -62,7 +62,7 @@ var/global/list/all_money_accounts = list() //create a new account var/datum/money_account/M = new() M.owner_name = new_owner_name - M.remote_access_pin = rand(1111, 111111) + M.remote_access_pin = rand(1000, 9999) M.money = starting_funds //create an entry in the account transaction log for when it was created @@ -161,7 +161,7 @@ var/global/list/all_money_accounts = list() vendor_account = department_accounts["Vendor"] if(!current_date_string) - current_date_string = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], 2557" + current_date_string = "[num2text(rand(1,31))] [pick("January","February","March","April","May","June","July","August","September","October","November","December")], [game_year]" machine_id = "[station_name()] Acc. DB #[num_financial_terminals++]" diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 7c3b44a4e0..c73adc1162 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -432,7 +432,7 @@ var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ - src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") if (href_list["del_c"]) if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 262dcf4ab8..e56ba78f20 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -369,7 +369,7 @@ What a mess.*/ var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ - active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") if ("Delete Record (ALL)") if (active1) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 96789249fd..ef85539946 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1371,7 +1371,7 @@ /obj/mecha/proc/get_log_html() var/output = "[src.name] Log" for(var/list/entry in log) - output += {"
[time2text(entry["time"],"DDD MMM DD hh:mm:ss")] 2555
+ output += {"
[time2text(entry["time"],"DDD MMM DD hh:mm:ss")] [game_year]
[entry["message"]]
"} output += "" diff --git a/code/global.dm b/code/global.dm index d8e900dbc4..69678943ab 100644 --- a/code/global.dm +++ b/code/global.dm @@ -79,6 +79,7 @@ var/href_logfile = null var/station_name = "NSS Exodus" var/game_version = "Baystation12" var/changelog_hash = "" +var/game_year = (text2num(time2text(world.realtime, "YYYY")) + 544) var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null var/going = 1.0 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9b13b8bfe6..cc0db4e932 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -653,10 +653,10 @@ counter++ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr - R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") if(istype(usr,/mob/living/silicon/robot)) var/mob/living/silicon/robot/U = usr - R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") if (href_list["medical"]) if(hasHUD(usr,"medical")) @@ -780,10 +780,10 @@ counter++ if(istype(usr,/mob/living/carbon/human)) var/mob/living/carbon/human/U = usr - R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") if(istype(usr,/mob/living/silicon/robot)) var/mob/living/silicon/robot/U = usr - R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]") + R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") ..() return From 74c19d4ec81b9c666541f97d438d37280e2321f6 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 13:24:13 +0100 Subject: [PATCH 02/18] Added vacuum flask to bar. --- .../reagent_containers/food/drinks.dm | 6 ++++++ icons/obj/drinks.dmi | Bin 59748 -> 60012 bytes maps/tgstation2.dmm | 5 +++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 66a1b3e343..02215e98c5 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -395,6 +395,12 @@ icon_state = "barflask" volume = 60 +/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask + name = "vacuum flask" + desc = "Keeping your drinks at the perfect temperature since 2321." + icon_state = "vacuumflask" + volume = 60 + /obj/item/weapon/reagent_containers/food/drinks/britcup name = "cup" desc = "A cup with the british flag emblazoned on it." diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 6e4d355c5bdf42f72c22b4300d557da7eec97bb3..89e27c1919ca84e4712497c43f9c0817af30d905 100644 GIT binary patch delta 3605 zcmV+w4(jpb(gW<&1CS&Exv?ds1RNl?r!Y~zkI)6-+%kM`VS810&@-I6T-9L z1ijaPoqKFk_Z7##_xfJHV&_#8@}vudZX%#kpo5l)&_UZ!8BH4$TtoKEd0YtBtwN@gb^#3-3_D33XvCa$KCfs%{72(7& zC|K5l{K5i!Dgj%5^Q!E61OWhBA9|4c`+KLPJ4+Yb^nGqeFSb7PpzL<7;k7@1GH)M! zLjr(*pPgKE{^{M5_l4@|A3(!v(?@DEp(xLax867sJC@4RaI5+`Ft=K3@{iX+5XXF z(89$<@DD393F)&KAuu8Mf+iS)0B0Eir{{rjvm$x~0RVq}=eX6;>ukH!-ECX8V)?Bl z3o2kV79cDz@Vf(WTphyaAHLtl={eg*+@nYvzIx9_X5yzJ_rDoRIUwYJ0Avv?!$Ju5 zNUUK2!}Gw*BLMQ;CtJDbzJh|)7D!8dSTt4vquB~^-Z&&q02EFG=o|FltY;LrJ=_U~ zjZFRMSRfPti3bLDK2L z=s1}3%;0sB?#U;2sq43*yk8 z1G0Morw8@u@s1;(lVA)Ffa7=+czFnG7RoI}5J`Dr=MR)i^UpEJ0mvdAFprnN{aKwe zMSelrOZViuPqtEjacv%g-T*HCs}Jm07=HDfLM@$tY->X{^qU}vxd9~s<~A8e0FoIW zwL|f0>dd4KN{+;*>o-LK2!bGpbjZj7NHi|dW37yFHcUe#yQbFXk*xpO;204EK@i!` zj0yoIOM+9==w*wMqbUG_AZ9Z(1(4gM?Eo|mhMk$**j}QOwdOqOYpb74GzE-FKMS?? zIUs$1ZS`}RmX;RDK?!EWk84U`^0myCAssz|L7R@s z*nu`2oOC_@oRa#eN0FO8ZA8l&y`juMx1VMapW>g4h zC3a+VtOQZx7q2y)QI=afQD2RICu@U$TH2g74~-wSr~DTg0V+$#<0=Dyy1Ji8j>_dy z{Lkn$B?&{c0ym655OD}x+v{T2<}%Sf?iul-!eTnKXT%$OoeTXZh`B^s5rBHrSot$e ztOLtv14+|5II8H4ge#GTwtVoMf5nC@rj)i!!vd)($!Bj`c_LnehOkz-&N9AyZ`CZ z)ZV3v6EJ!7KZ0$G3YC%~Qcz(rVb6#cy&`X~clI`(0oKc{QC3!l;^Ja-baZ6&I{@Hv zx#Vt6*3i_{6pH|C+O$c3>*f%%l=KY+!{F1)C#QX&v%#8MvN z{rGlhp`U8Bub6(COc;F?$`Q9sasqONded0>-V?3PU%u}v`O`g?*s!
FYtDz3vX z7J2)5zb6uMVS#1leES*n`jpaJzI-`&o}YBCpr9b-`#U;1WDUQ6XB+kP^|1&5LClo2 zlK?mO9{t+!!I}^!iXk9%^4&YbOM^aD&YB2-vR0DxguXgu%tG{&L<3L^-@6el3w5lH0}5Ck!m zjOL2N5+5AV6*CAUB#A%)@8;TY5T0;Bh+!B;lq5#SC^!FqoJ=1qG}X_g{-;Azz$n$L zqO=3RP5>(>e&!bO;eRc7vCxWoXK!P%$lEI{CMe|qxLhs*M5a5x;%-y;a(CS+tR>P=(i?_FCkC^2j({yZaz8~{iR8&Wd-O#0gDPe=XI$b4i| zdzYeB0S%Ua*AX%NKy(EFp&l(Gqj+Rw6h|v7?0ZJMnzSL_35bsfB)p!pIRFG92N{nR z?>7falxPU)&kp^Y(bV1rK#h{X(eVGv3Fink_+N-^0f4pLF7$HZn#i$1iB*6Al1Bl6 zsnY=fFg!dQy++2LAf`dna4|9WP}=x!F10Yb|GY1MNn+PNY%aAZ{=mOaAF!U>{kx>Y z-uv_cRVv|e*1RcYe?9c3z3~|03W6urzv2Dcz_OkmmcQtQa5&Vk+bS z5NT6y8e_1tMbpiI0H|WTFn$P+{= zv^4gAsg@OLJ>AgN)up98F-su_fFKAW4Fo}u;!6_GpMRqyb~cqCCWv$)2Y?_5A`NP5 zYbTW?b~qfd*Bdu(M00a9L&=B4Y=RsBf*^=AsjaPzy^iiVkXVdJDLOkl71tng3+D9c z(^|KIAP6GsvDs{smLkTlG#D5dKwn><;!^-*Z@&4a)X~uq+YZ=bv7ofH6#Mq=o00DN z_3LGBAu*ev2mnD4L>eU4BZ$@@7#<#m%jII!SbDg1>sFdxAY_9a0D>ThG)Y#EfR-Q< bvz7k?>DZ1oY+6>F00000NkvXXu0mjf(hk3h delta 3339 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 VKe~~tzzYBX002ovPDHLkV1kUTVBY`$ diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 313780f04b..8c9225e159 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1898,7 +1898,7 @@ "aKz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aKA" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/requests_console{announcementConsole = 0; department = "Bar"; departmentType = 2; name = "Bar RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aKB" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/barman_recipes,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aKC" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aKC" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask,/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aKD" = (/obj/machinery/power/apc{dir = 1; name = "Bar APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/stool/bed/chair/comfy/brown{icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aKE" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/crew_quarters/bar) "aKF" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -10171,7 +10171,7 @@ "dNE" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dNF" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/mine/production) "dNG" = (/turf/space,/area/vox_station/mining) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11719,3 +11719,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + From 235e09d2b99cf7d7cbb6c1e9df36fca98f26c06d Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 13:24:38 +0100 Subject: [PATCH 03/18] Changed icon path for custom items due to compile times. --- code/game/mecha/equipment/tools/tools.dm | 2 +- code/modules/customitems/item_defines.dm | 160 +++++++++++------------ 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index a7936f1564..fd34b65baa 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -1064,7 +1064,7 @@ /obj/item/weapon/paintkit //Please don't use this for anything, it's a base type for custom mech paintjobs. name = "mecha customisation kit" desc = "A generic kit containing all the needed tools and parts to turn a mech into another mech." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "royce_kit" var/new_name = "mech" //What is the variant called? diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 42307b1708..94979fecd5 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1,9 +1,9 @@ // Add custom items you give to people here, and put their icons in custom_items.dmi -// Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base +// Remember to change 'icon = 'icons/obj/custom_items.dmi'' for items not using /obj/item/fluff as a base // Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files. /obj/item/fluff // so that they don't spam up the object tree - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' w_class = 1.0 ////////////////////////////////// @@ -88,7 +88,7 @@ /obj/item/weapon/book/fluff/johnathan_falcian_1 name = "sketchbook" desc = "A small, well-used sketchbook." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "johnathan_notebook" dat = "In the notebook there are numerous drawings of various crew-mates, locations, and scenes on the ship. They are of fairly good quality." author = "Johnathan Falcian" @@ -101,7 +101,7 @@ /obj/item/weapon/folder/blue/fluff/matthew_riebhardt //Matthew Riebhardt - ZekeSulastin name = "academic journal" desc = "An academic journal, seemingly pertaining to medical genetics. This issue is for the second quarter of 2557. Paper flags demarcate some articles the owner finds interesting." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "matthewriebhardt" /obj/item/weapon/pen/fluff/multi //spaceman96: Trenna Seber @@ -111,19 +111,19 @@ /obj/item/weapon/pen/fluff/fancypen //orangebottle: Lillian Levett, Lilliana Reade name = "fancy pen" desc = "A fancy metal pen. It uses blue ink. An inscription on one side reads,\"L.L. - L.R.\"" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "fancypen" /obj/item/weapon/pen/fluff/eugene_bissegger_1 //metamorp: eugene bisseger name = "Gilded Pen" desc = "A golden pen that is gilded with a meager amount of gold material. The word 'NanoTrasen' is etched on the clip of the pen." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "eugene_pen" /obj/item/weapon/pen/fluff/fountainpen //paththegreat: Eli Stevens name = "Engraved Fountain Pen" desc = "An expensive looking pen with the initials E.S. engraved into the side." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "fountainpen" /obj/item/fluff/victor_kaminsky_1 //chinsky: Victor Kaminski @@ -154,46 +154,46 @@ /obj/item/weapon/soap/fluff/azare_siraj_1 //mister fox: Azare Siraj name = "S'randarr's Tongue Leaf" desc = "A waxy, scentless leaf." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "siraj_tongueleaf" item_state = "siraj_tongueleaf" /obj/item/weapon/clipboard/fluff/smallnote //lexusjjss: Lexus Langg, Zachary Tomlinson name = "small notebook" desc = "A generic small spiral notebook that flips upwards." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "smallnotetext" item_state = "smallnotetext" /obj/item/weapon/storage/fluff/maye_daye_1 //morrinn: Maye Day name = "pristine lunchbox" desc = "A pristine stainless steel lunch box. The initials M.D. are engraved on the inside of the lid." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "maye_daye_1" /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/william_hackett name = "handmade flask" desc = "A wooden flask with a silver lid and bottom. It has a matte, dark blue paint on it with the initials \"W.H.\" etched in black." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "williamhackett" /obj/item/weapon/storage/firstaid/fluff/asus_rose //Kerbal22 - Asus Rose name = "rugged medkit" desc = "A dinged up medkit, it seems to have seen quite a bit of use." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "asusrose" /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1 //leonheart11: Johann Erzatz name = "vintage thermos" desc = "An older thermos with a faint shine." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "johann_erzatz_1" volume = 50 /obj/item/weapon/lighter/zippo/fluff/li_matsuda_1 //mangled: Li Matsuda name = "blue zippo lighter" desc = "A zippo lighter made of some blue metal." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "bluezippo" icon_on = "bluezippoon" icon_off = "bluezippo" @@ -201,7 +201,7 @@ /obj/item/weapon/lighter/zippo/fluff/michael_guess_1 //Dragor23: Michael Guess name = "engraved lighter" desc = "A golden lighter, engraved with some ornaments and a G." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "guessip" icon_on = "guessipon" icon_off = "guessip" @@ -209,7 +209,7 @@ /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 //rawrtaicho: Riley Rohtin name = "Riley's black zippo" desc = "A black zippo lighter, which holds some form of sentimental value." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "blackzippo" icon_on = "blackzippoon" icon_off = "blackzippo" @@ -217,7 +217,7 @@ /obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1 //furohman: Fay Sullivan name = "Graduation Lighter" desc = "A silver engraved lighter with 41 on one side and Tharsis University on the other. The lid reads Fay Sullivan, Cybernetic Engineering, 2541" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "gradzippo" icon_on = "gradzippoon" icon_off = "gradzippo" @@ -225,7 +225,7 @@ /obj/item/weapon/lighter/zippo/fluff/executivekill_1 //executivekill: Hunter Duke name = "Gonzo Fist zippo" desc = "A Zippo lighter with the iconic Gonzo Fist on a matte black finish." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "gonzozippo" icon_on = "gonzozippoon" icon_off = "gonzozippo" @@ -233,7 +233,7 @@ /obj/item/weapon/lighter/zippo/fluff/naples_1 //naples: Russell Vierson name = "Engraved zippo" desc = "A intricately engraved Zippo lighter." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "engravedzippo" icon_on = "engravedzippoon" icon_off = "engravedzippo" @@ -242,7 +242,7 @@ name = "purple comb" desc = "A pristine purple comb made from flexible plastic. It has a small K etched into its side." w_class = 1.0 - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "purplecomb" item_state = "purplecomb" @@ -255,12 +255,12 @@ /obj/item/weapon/fluff/hugo_cinderbacth_1 //thatoneguy: Hugo Cinderbatch name = "Old Cane" desc = "An old brown cane made from wood. It has a a large, itallicized H on it's handle." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "special_cane" /obj/item/device/camera/fluff/orange //chinsky: Summer Springfield name = "orange camera" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' desc = "A modified detective's camera, painted in bright orange. On the back you see \"Have fun\" written in small accurate letters with something black." icon_state = "orangecamera" icon_on = "orangecamera" @@ -269,7 +269,7 @@ /obj/item/device/camera/fluff/oldcamera //magmaram: Maria Crash name = "Old Camera" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' desc = "An old, slightly beat-up digital camera, with a cheap photo printer taped on. It's a nice shade of blue." icon_state = "oldcamera" icon_on = "oldcamera" @@ -280,26 +280,26 @@ name = "ID wallet" desc = "A wallet made of black leather, holding an ID and a gold badge that reads 'NT.' The ID has a small picture of a man, with the caption Reese James MacKenzie, with other pieces of information to the right of the picture." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "reesemackenzie" /obj/item/weapon/card/id/fluff/lifetime //fastler: Fastler Greay; it seemed like something multiple people would have name = "Lifetime ID Card" desc = "A modified ID card given only to those people who have devoted their lives to the better interests of NanoTrasen. It sparkles blue." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "lifetimeid" /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask //lexusjjss: Lexus Langg & Zachary Tomlinson name = "shiny flask" desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "shinyflask" volume = 50 /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask //mcgulliver: Wox Derax name = "Lithium Flask" desc = "A flask with a Lithium Atom symbol on it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "lithiumflask" volume = 50 @@ -314,7 +314,7 @@ /obj/item/weapon/reagent_containers/glass/beaker/fluff/eleanor_stone //Rkf45: Eleanor Stone name = "teapot" desc = "An elegant teapot. The engraving on the bottom reads 'ENS'" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "eleanorstone" item_state = "eleanorstone" @@ -348,7 +348,7 @@ /obj/item/clothing/mask/fluff/electriccig //CubeJackal: Barry Sharke name = "Electronic cigarette" desc = "An electronic cigarette. Most of the relief of a real cigarette with none of the side effects. Often used by smokers who are trying to quit the habit." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "cigon" throw_speed = 0.5 item_state = "ciglit" @@ -361,7 +361,7 @@ /obj/item/weapon/reagent_containers/hypospray/fluff/asher_spock_1 name = "strange penlight" desc = "Besides the coloring, this penlight looks rather normal and innocent. However, you get a nagging feeling whenever you see it..." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "asher_spock_1" amount_per_transfer_from_this = 5 volume = 15 @@ -414,27 +414,27 @@ /obj/item/weapon/card/id/fluff/asher_spock_2 //Nerezza: Asher Spock name = "Odysses Specialist ID card" desc = "A special identification card with a red cross signifying an emergency physician has specialised in Odysseus operations and maintenance.\nIt grants the owner recharge bay access." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "odysseus_spec_id" /obj/item/weapon/clipboard/fluff/mcreary_journal //sirribbot: James McReary name = "McReary's journal" desc = "A journal with a warning sticker on the front cover. The initials \"J.M.\" are written on the back." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "mcreary_journal" item_state = "mcreary_journal" /obj/item/device/flashlight/fluff/thejesster14_1 //thejesster14: Rosa Wolff name = "old red flashlight" desc = "A very old, childlike flashlight." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "wolfflight" item_state = "wolfflight" /obj/item/weapon/crowbar/fluff/zelda_creedy_1 //daaneesh: Zelda Creedy name = "Zelda's Crowbar" desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "zeldacrowbar" item_state = "crowbar" @@ -443,7 +443,7 @@ /obj/item/weapon/paintkit/fluff/butcher_royce_1 name = "Ripley customisation kit" desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into a Titan's Fist worker mech." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "royce_kit" new_name = "APLU \"Titan's Fist\"" @@ -456,7 +456,7 @@ /obj/item/weapon/paintkit/fluff/sven_fjeltson_1 name = "Mercenary APLU kit" desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into an old Mercenaries APLU." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "sven_kit" new_name = "APLU \"Strike the Earth!\"" @@ -482,7 +482,7 @@ /obj/item/clothing/gloves/fluff/walter_brooks_1 //botanistpower: Walter Brooks name = "mittens" desc = "A pair of well worn, blue mittens." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "walter_brooks_1" item_state = "bluegloves" color="blue" @@ -490,13 +490,13 @@ /obj/item/clothing/gloves/fluff/chal_appara_1 //furlucis: Chal Appara name = "Left Black Glove" desc = "The left one of a pair of black gloves. Wonder where the other one went..." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "chal_appara_1" /obj/item/clothing/gloves/fluff/ashley_rifler_1 //Vinceluk: Ashley Rifler name = "Purple Glove" desc = "A single, purple glove. Initials A.R. are written on the inside of it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "ashley_rifler_1" //////////// Eye Wear //////////// @@ -504,13 +504,13 @@ /obj/item/clothing/glasses/meson/fluff/book_berner_1 //asanadas: Book Berner name = "bespectacled mesonic surveyors" desc = "One of the older meson scanner models retrofitted to perform like its modern counterparts." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "book_berner_1" /obj/item/clothing/glasses/fluff/uzenwa_sissra_1 //sparklysheep: Uzenwa Sissra name = "Scanning Goggles" desc = "A very oddly shaped pair of goggles with bits of wire poking out the sides. A soft humming sound emanates from it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "uzenwa_sissra_1" ////// Medical eyepatch - Thysse Ezinwa - Jadepython @@ -522,7 +522,7 @@ /obj/item/clothing/glasses/fluff/arjun_chopra_1 name = "safety goggles" desc = "A used pair of leather safety goggles." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "arjun_chopra" item_state = "arjun_chopra" @@ -531,49 +531,49 @@ /obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard name = "\improper SWAT hat" desc = "A black hat. The inside has the words, \"Lieutenant James Girard, LPD SWAT Team Four.\"" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "swatcap" /obj/item/clothing/head/welding/fluff/alice_mccrea_1 //madmalicemccrea: Alice McCrea name = "flame decal welding helmet" desc = "A welding helmet adorned with flame decals, and several cryptic slogans of varying degrees of legibility. \"Fly the Friendly Skies\" is clearly visible, written above the visor, for some reason." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "alice_mccrea_1" /obj/item/clothing/head/welding/fluff/yuki_matsuda_1 //searif: Yuki Matsuda name = "white decal welding helmet" desc = "A white welding helmet with a character written across it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "yuki_matsuda_1" /obj/item/clothing/head/welding/fluff/norah_briggs_1 //bountylord13: Norah Briggs name = "blue flame decal welding helmet" desc = "A welding helmet with blue flame decals on it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "norah_briggs_1" /obj/item/clothing/head/helmet/greenbandana/fluff/taryn_kifer_1 //themij: Taryn Kifer name = "orange bandana" desc = "Hey, I think we're missing a hazard vest..." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "taryn_kifer_1" /obj/item/clothing/head/fluff/edvin_telephosphor_1 //foolamancer: Edvin Telephosphor name = "Edvin's Hat" desc = "A hat specially tailored for Skrellian anatomy. It has a yellow badge on the front, with a large red 'T' inscribed on it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "edvin_telephosphor_1" /obj/item/clothing/head/fluff/krinnhat //Shirotyrant: Krinn Seeskale name = "saucepan hat" desc = "This hat is the shiniest shiny Krinn has ever owned." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "krinn_hat" /obj/item/clothing/head/fluff/bruce_hachert //Stup1dg33kz: Bruce Hachert name = "worn hat" desc = "A worn-looking hat. It is slightly faded in color." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "brucehachert" //////////// Suits //////////// @@ -581,19 +581,19 @@ /obj/item/clothing/suit/storage/labcoat/fluff/aeneas_rinil //Robotics Labcoat - Aeneas Rinil [APPR] name = "Robotics labcoat" desc = "A labcoat with a few markings denoting it as the labcoat of roboticist." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "aeneasrinil_open" /obj/item/clothing/suit/storage/labcoat/fluff/pink //spaceman96: Trenna Seber name = "pink labcoat" desc = "A suit that protects against minor chemical spills. Has a pink stripe down from the shoulders." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "labcoat_pink_open" /obj/item/clothing/suit/storage/det_suit/fluff/graycoat //vinceluk: Seth Sealis name = "gray coat" desc = "Old, worn out coat. It's seen better days." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "graycoat" item_state = "graycoat" color = "graycoat" @@ -601,7 +601,7 @@ /obj/item/clothing/suit/storage/det_suit/fluff/leatherjack //atomicdog92: Seth Sealis name = "leather jacket" desc = "A black leather coat, popular amongst punks, greasers, and other galactic scum." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "leatherjack" item_state = "leatherjack" color = "leatherjack" @@ -609,7 +609,7 @@ /obj/item/clothing/suit/armor/vest/fluff/deus_blueshield //deusdactyl name = "blue shield security armor" desc = "An armored vest with the badge of a Blue Shield Security lieutenant." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "deus_blueshield" item_state = "deus_blueshield" @@ -626,7 +626,7 @@ /obj/item/clothing/under/fluff/milo_hachert //Field Dress Uniform - Milo Hachert - Commissar_Drew name = "field dress uniform" desc = "A uniform jacket, its buttons polished to a shine, coupled with a dark pair of trousers. 'Hachert' is embroidered upon the jacket’s shoulder bar." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "milohachert" item_state = "milohachert" color = "milohachert" @@ -634,7 +634,7 @@ /obj/item/clothing/under/fluff/jumpsuitdown //searif: Yuki Matsuda name = "rolled down jumpsuit" desc = "A rolled down jumpsuit. Great for mechanics." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "jumpsuitdown" item_state = "jumpsuitdown" color = "jumpsuitdown" @@ -642,7 +642,7 @@ /obj/item/clothing/under/fluff/lilith_vinous_1 //slyhidden: Lilith Vinous name = "casual security uniform" desc = "A less formal version of the traditional dark red Security uniform. It has the top button undone, rolled up sleeves and different belt." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "lilith_uniform" item_state = "lilith_uniform" color = "lilith_uniform" @@ -650,7 +650,7 @@ /obj/item/clothing/under/fluff/ana_issek_1 //suethecake: Ana Issek name = "retired uniform" desc = "A silken blouse paired with dark-colored slacks. It has the words 'Chief Investigator' embroidered into the shoulder bar." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "ana_uniform" item_state = "ana_uniform" color = "ana_uniform" @@ -658,7 +658,7 @@ /obj/item/clothing/under/fluff/olddressuniform //desiderium: Momiji Inubashiri name = "retired dress uniform" desc = "A retired Station Head of Staff uniform, phased out twenty years ago for the newer jumpsuit design, but still acceptable dress. Lovingly maintained." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "olddressuniform" item_state = "olddressuniform" color = "olddressuniform" @@ -666,14 +666,14 @@ /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1 //whitewolf41: Jeremy Wolf name = "worn officer's uniform" desc = "An old red security jumpsuit. Seems to have some slight modifications." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "jeremy_wolf_1" color = "jeremy_wolf_1" /obj/item/clothing/under/fluff/tian_dress //phaux: Tian Yinhu name = "purple dress" desc = "A nicely tailored purple dress made for the taller woman." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "tian_dress" item_state = "tian_dress" color = "tian_dress" @@ -681,7 +681,7 @@ /obj/item/clothing/under/rank/bartender/fluff/classy //searif: Ara Al-Jazari name = "classy bartender uniform" desc = "A prim and proper uniform that looks very similar to a bartender's, the only differences being a red tie, waistcoat and a rag hanging out of the back pocket." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "ara_bar_uniform" item_state = "ara_bar_uniform" color = "ara_bar_uniform" @@ -689,7 +689,7 @@ /obj/item/clothing/under/fluff/callum_suit //roaper: Callum Leamus name = "knockoff suit" desc = "A knockoff of a suit commonly worn by the upper class." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "callum_suit" item_state = "callum_suit" color = "callum_suit" @@ -697,7 +697,7 @@ /obj/item/clothing/under/fluff/solara_light_1 //bluefishie: Solara Born-In-Light name = "Elaborate Purple Dress" desc = "An expertly tailored dress, made out of fine fabrics. The interwoven necklace appears to be made out of gold, with three complicated symbols engraved in the front." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "solara_dress" item_state = "solara_dress" color = "solara_dress" @@ -741,7 +741,7 @@ name = "ex-commander jumpsuit" desc = "A standard Central Command Engineering Commander jumpsuit tailored to fight the wearer tightly. It has a Medal of Service pinned onto the left side of it." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "wyatt_uniform" item_state = "wyatt_uniform" color = "wyatt_uniform" @@ -752,7 +752,7 @@ /obj/item/clothing/mask/fluff/flagmask //searif: Tsiokeriio Tarbell name = "\improper First Nations facemask" desc = "A simple cloth rag that bears the flag of the first nations." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "flagmask" item_state = "flagmask" flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH @@ -763,7 +763,7 @@ /obj/item/clothing/mask/mara_kilpatrick_1 //staghorn: Mara Kilpatrick name = "shamrock pendant" desc = "A silver and emerald shamrock pendant. It has the initials \"M.K.\" engraved on the back." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "mara_kilpatrick_1" flags = FPRINT|TABLEPASS w_class = 1 @@ -773,7 +773,7 @@ /obj/item/clothing/tie/fluff/altair_locket name = "small locket" desc = "A small golden locket attached to an Ii'rka-reed string. Inside the locket is a holo-picture of a female Tajaran, and an inscription writtin in Siik'mas." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "altair_locket" item_state = "altair_locket" color = "altair_locket" @@ -787,7 +787,7 @@ /obj/item/clothing/tie/fluff/konaa_hirano name = "silver locket" desc = "This oval shaped, argentium sterling silver locket hangs on an incredibly fine, refractive string, almost thin as hair and microweaved from links to a deceptive strength, of similar material. The edges are engraved very delicately with an elegant curving design, but overall the main is unmarked and smooth to the touch, leaving room for either remaining as a stolid piece or future alterations. There is an obvious internal place for a picture or lock of some sort, but even behind that is a very thin compartment unhinged with the pinch of a thumb and forefinger." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "konaahirano" item_state = "konaahirano" color = "konaahirano" @@ -820,7 +820,7 @@ /obj/item/clothing/tie/fluff/nasir_khayyam_1 name = "medallion" desc = "This silvered medallion bears the symbol of the Hadii Clan of the Tajaran." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "nasir_khayyam_1" flags = FPRINT|TABLEPASS w_class = 1 @@ -831,7 +831,7 @@ /obj/item/clothing/mask/mara_kilpatrick_1 name = "emerald necklace" desc = "A brass necklace with a green emerald placed at the end. It has a small inscription on the top of the chain, saying \'Foster\'" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "ty_foster" flags = FPRINT|TABLEPASS w_class = 1 @@ -841,7 +841,7 @@ /obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris name = "Susan's Magboots" desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "atmosmagboots0" //////////// Sets //////////// @@ -850,7 +850,7 @@ /obj/item/clothing/suit/storage/labcoat/fluff/cdc_labcoat name = "\improper CDC labcoat" desc = "A standard-issue CDC labcoat that protects against minor chemical spills. It has the name \"Wiles\" sewn on to the breast pocket." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "labcoat_cdc_open" */ ////// Short Sleeve Medical Outfit //erthilo: Farah Lants @@ -858,14 +858,14 @@ /obj/item/clothing/under/rank/medical/fluff/short name = "short sleeve medical jumpsuit" desc = "Made of a special fiber that gives special protection against biohazards. Has a cross on the chest denoting that the wearer is trained medical personnel and short sleeves." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "medical_short" color = "medical_short" /obj/item/clothing/suit/storage/labcoat/fluff/red name = "red labcoat" desc = "A suit that protects against minor chemical spills. Has a red stripe on the shoulders and rolled up sleeves." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "labcoat_red_open" ////// Retired Patrol Outfit //desiderium: Rook Maudlin @@ -873,7 +873,7 @@ /obj/item/clothing/suit/storage/det_suit/fluff/retpolcoat name = "retired colony patrolman's coat" desc = "A clean, black nylon windbreaker with the words \"OUTER LIGHT POLICE\" embroidered in gold-dyed thread on the back. \"RETIRED\" is tastefully embroidered below in a smaller font." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "retpolcoat" item_state = "retpolcoat" color = "retpolcoat" @@ -881,13 +881,13 @@ /obj/item/clothing/head/det_hat/fluff/retpolcap name = "retired colony patrolman's cap" desc = "A clean and properly creased colony police cap. The badge is shined and polished, the word \"RETIRED\" engraved professionally under the words \"OUTER LIGHT POLICE.\"" - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "retpolcap" /obj/item/clothing/under/det/fluff/retpoluniform name = "retired colony patrolman's uniform" desc = "A meticulously clean police uniform belonging to Precinct 31, Outer Light Colony. The word \"RETIRED\" is engraved tastefully and professionally in the badge below the number, 501." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "retpoluniform" color = "retpoluniform" @@ -903,7 +903,7 @@ /obj/item/weapon/gun/projectile/detective/fluff/callum_leamas name = "Deckard .44" desc = "A custom built revolver, based off the semi-popular Detective Special model." - icon = 'custom_items.dmi' + icon = 'icons/obj/custom_items.dmi' icon_state = "leamas-empty" /obj/item/weapon/gun/projectile/detective/fluff/callum_leamas/update_icon() From d576997bfad633b42c9366eeca188cc6e3a17867 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 20:10:25 +0100 Subject: [PATCH 04/18] Fuel tanks explode from fire. --- code/modules/reagents/reagent_dispenser.dm | 119 +++++++++++---------- 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 93cb235649..e6c4af7ce1 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -95,74 +95,81 @@ ..() reagents.add_reagent("fuel",1000) - examine() - set src in view() - ..() - if (!(usr in view(2)) && usr!=src.loc) return - if (modded) - usr << "\red Fuel faucet is wrenched open, leaking the fuel!" - if(rig) - usr << "There is some kind of device rigged to the tank." +/obj/structure/reagent_dispensers/fueltank/examine() + set src in view() + ..() + if (!(usr in view(2)) && usr!=src.loc) return + if (modded) + usr << "\red Fuel faucet is wrenched open, leaking the fuel!" + if(rig) + usr << "There is some kind of device rigged to the tank." - attack_hand() +/obj/structure/reagent_dispensers/fueltank/attack_hand() + if (rig) + usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]") + if(do_after(usr, 20)) + usr.visible_message("\blue [usr] detaches [rig] from \the [src].", "\blue You detach [rig] from \the [src]") + rig.loc = get_turf(usr) + rig = null + overlays = new/list() + +/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W,/obj/item/weapon/wrench)) + user.visible_message("[user] wrenches [src]'s faucet [modded ? "closed" : "open"].", \ + "You wrench [src]'s faucet [modded ? "closed" : "open"]") + modded = modded ? 0 : 1 + if (istype(W,/obj/item/device/assembly_holder)) if (rig) - usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]") - if(do_after(usr, 20)) - usr.visible_message("\blue [usr] detaches [rig] from \the [src].", "\blue You detach [rig] from \the [src]") - rig.loc = get_turf(usr) - rig = null - overlays = new/list() + user << "\red There is another device in the way." + return ..() + user.visible_message("[user] begins rigging [W] to \the [src].", "You begin rigging [W] to \the [src]") + if(do_after(user, 20)) + user.visible_message("\blue [user] rigs [W] to \the [src].", "\blue You rig [W] to \the [src]") - attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W,/obj/item/weapon/wrench)) - user.visible_message("[user] wrenches [src]'s faucet [modded ? "closed" : "open"].", \ - "You wrench [src]'s faucet [modded ? "closed" : "open"]") - modded = modded ? 0 : 1 - if (istype(W,/obj/item/device/assembly_holder)) - if (rig) - user << "\red There is another device in the way." - return ..() - user.visible_message("[user] begins rigging [W] to \the [src].", "You begin rigging [W] to \the [src]") - if(do_after(user, 20)) - user.visible_message("\blue [user] rigs [W] to \the [src].", "\blue You rig [W] to \the [src]") + var/obj/item/device/assembly_holder/H = W + if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter)) + message_admins("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") + log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") - var/obj/item/device/assembly_holder/H = W - if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter)) - message_admins("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") - log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.") + rig = W + user.drop_item() + W.loc = src - rig = W - user.drop_item() - W.loc = src + var/icon/test = getFlatIcon(W) + test.Shift(NORTH,1) + test.Shift(EAST,6) + overlays += test - var/icon/test = getFlatIcon(W) - test.Shift(NORTH,1) - test.Shift(EAST,6) - overlays += test - - return ..() + return ..() - bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) - if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) ) - explode() +/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) + if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) ) + explode() - blob_act() - explode() +/obj/structure/reagent_dispensers/fueltank/blob_act() + explode() - ex_act() - explode() +/obj/structure/reagent_dispensers/fueltank/ex_act() + explode() - proc/explode() - if (reagents.total_volume > 500) - explosion(src.loc,1,2,4) - else if (reagents.total_volume > 100) - explosion(src.loc,0,1,3) - else - explosion(src.loc,-1,1,2) +/obj/structure/reagent_dispensers/fueltank/proc/explode() + if (reagents.total_volume > 500) + explosion(src.loc,1,2,4) + else if (reagents.total_volume > 100) + explosion(src.loc,0,1,3) + else + explosion(src.loc,-1,1,2) + if(src) + del(src) + +/obj/structure/reagent_dispensers/fueltank/temperature_expose(datum/gas_mixture/air, temperature, volume) + if(temperature > T0C+500) + explosion(src.loc,-1,0,2) if(src) del(src) + return ..() /obj/structure/reagent_dispensers/peppertank name = "Pepper Spray Refiller" @@ -214,4 +221,4 @@ New() ..() - reagents.add_reagent("virusfood", 1000) + reagents.add_reagent("virusfood", 1000) From 469cc55020c5227241b8b971986362e04fd38c7f Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 20:47:54 +0100 Subject: [PATCH 05/18] Readjusts pill chems due to overdose. Adds pill dissolve logging. --- code/modules/reagents/reagent_containers/pill.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 3c4bbcdb7d..6c3c363a18 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -64,9 +64,14 @@ user << "\red [target] is empty. Cant dissolve pill." return user << "\blue You dissolve the pill in [target]" + + user.attack_log += text("\[[time_stamp()]\] Spiked \a [target] with a pill. Reagents: [reagentlist(src)]") + msg_admin_attack("[user.name] ([user.ckey]) spiked \a [target] with a pill. Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)]) (JMP)") + reagents.trans_to(target, reagents.total_volume) for(var/mob/O in viewers(2, user)) - O.show_message("\red [user] puts something in [target].", 1) + O.show_message("\red [user] puts something in \the [target].", 1) + spawn(5) del(src) @@ -115,7 +120,7 @@ icon_state = "pill8" New() ..() - reagents.add_reagent("stoxin", 30) + reagents.add_reagent("stoxin", 15) /obj/item/weapon/reagent_containers/pill/kelotane name = "Kelotane pill" @@ -123,7 +128,7 @@ icon_state = "pill11" New() ..() - reagents.add_reagent("kelotane", 30) + reagents.add_reagent("kelotane", 15) /obj/item/weapon/reagent_containers/pill/tramadol name = "Tramadol pill" @@ -165,7 +170,7 @@ icon_state = "pill16" New() ..() - reagents.add_reagent("dexalin", 30) + reagents.add_reagent("dexalin", 15) /obj/item/weapon/reagent_containers/pill/bicaridine name = "Bicaridine pill" @@ -173,7 +178,7 @@ icon_state = "pill18" New() ..() - reagents.add_reagent("bicaridine", 30) + reagents.add_reagent("bicaridine", 20) /obj/item/weapon/reagent_containers/pill/happy name = "Happy pill" From a4829a271e217563f80be9cdad5a1e809588ef2f Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 20:51:19 +0100 Subject: [PATCH 06/18] Gas mask filters Plasma and N2O. --- code/ZAS/FEA_gas_mixture.dm | 8 +++---- code/ZAS/ZAS_Turfs.dm | 15 ++++++------- code/modules/clothing/clothing.dm | 1 + code/modules/clothing/masks/gasmask.dm | 3 ++- code/modules/mob/living/carbon/human/life.dm | 21 +++++++++++-------- code/modules/mob/living/carbon/monkey/life.dm | 6 +++++- code/modules/mob/living/living.dm | 1 + 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/code/ZAS/FEA_gas_mixture.dm b/code/ZAS/FEA_gas_mixture.dm index 8b7ab992c9..273d7669f1 100644 --- a/code/ZAS/FEA_gas_mixture.dm +++ b/code/ZAS/FEA_gas_mixture.dm @@ -367,7 +367,7 @@ What are the archived variables for? //del(giver) return 1 -/datum/gas_mixture/proc/remove(amount) +/datum/gas_mixture/proc/remove(amount, var/filtered = 0) //Purpose: Removes a certain number of moles from the air. //Called by: ? //Inputs: How many moles to remove. @@ -384,7 +384,7 @@ What are the archived variables for? removed.oxygen = QUANTIZE((oxygen/sum)*amount) removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) - removed.toxins = QUANTIZE((toxins/sum)*amount) + removed.toxins = QUANTIZE(((toxins/sum)*amount)*(1-filtered)) oxygen -= removed.oxygen/group_multiplier nitrogen -= removed.nitrogen/group_multiplier @@ -396,8 +396,8 @@ What are the archived variables for? var/datum/gas/corresponding = new trace_gas.type() removed.trace_gases += corresponding - corresponding.moles = (trace_gas.moles/sum)*amount - trace_gas.moles -= corresponding.moles/group_multiplier + corresponding.moles = ((trace_gas.moles/sum)*amount)*(1-filtered) + trace_gas.moles -= (corresponding.moles/group_multiplier)*(1-filtered) removed.temperature = temperature update_values() diff --git a/code/ZAS/ZAS_Turfs.dm b/code/ZAS/ZAS_Turfs.dm index 0070a19c5d..4cdc8217e8 100644 --- a/code/ZAS/ZAS_Turfs.dm +++ b/code/ZAS/ZAS_Turfs.dm @@ -20,21 +20,22 @@ return GM -/turf/remove_air(amount as num) +/turf/remove_air(amount as num, var/filtered = 0) var/datum/gas_mixture/GM = new - var/sum = oxygen + carbon_dioxide + nitrogen + toxins + var/sum = oxygen + carbon_dioxide + nitrogen + (toxins*(1-filtered)) if(sum>0) GM.oxygen = (oxygen/sum)*amount GM.carbon_dioxide = (carbon_dioxide/sum)*amount GM.nitrogen = (nitrogen/sum)*amount - GM.toxins = (toxins/sum)*amount + GM.toxins = ((toxins/sum)*amount)*(1-filtered) GM.temperature = temperature GM.update_values() return GM + /turf/simulated/var/current_graphic = null /turf/simulated/var/tmp/datum/gas_mixture/air @@ -109,21 +110,21 @@ else return ..() -/turf/simulated/remove_air(amount as num) +/turf/simulated/remove_air(amount as num, var/filtered = 0) if(zone) var/datum/gas_mixture/removed = null - removed = zone.air.remove(amount) + removed = zone.air.remove(amount, filtered) return removed else if(air) var/datum/gas_mixture/removed = null - removed = air.remove(amount) + removed = air.remove(amount, filtered) if(air.check_tile_graphic()) update_visuals(air) return removed else - return ..() + return ..(amount, filtered) /turf/simulated/proc/update_air_properties() var/air_directions_archived = air_check_directions diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 92f18afcc1..0a9ecad292 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,7 @@ /obj/item/clothing name = "clothing" var/list/species_restricted = null //Only these species can wear this kit. + var/gas_filter_strength = 0 //For gas mask filters //BS12: Species-restricted clothing check. /obj/item/clothing/mob_can_equip(M as mob, slot) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index f8d643d5e3..44bf751967 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -1,6 +1,6 @@ /obj/item/clothing/mask/gas name = "gas mask" - desc = "A face-covering mask that can be connected to an air supply." + desc = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air." icon_state = "gas_alt" flags = FPRINT | TABLEPASS | MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE @@ -9,6 +9,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 siemens_coefficient = 0.9 + gas_filter_strength = 1 //Plague Dr suit can be found in clothing/suits/bio.dm /obj/item/clothing/mask/gas/plaguedoctor diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 35029f8ec8..d514a4f95b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -97,7 +97,7 @@ handle_pain() - handle_medical_side_effects() +// handle_medical_side_effects() handle_stasis_bag() @@ -322,14 +322,7 @@ // Not enough air around, take a percentage of what's there to model this properly breath_moles = environment.total_moles()*BREATH_PERCENTAGE - breath = loc.remove_air(breath_moles) - - if(!is_lung_ruptured()) - if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) - if(prob(5)) - rupture_lung() - - // Handle chem smoke effect -- Doohl + // Handle filtering var/block = 0 if(wear_mask) if(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) @@ -341,6 +334,16 @@ if(head.flags & BLOCK_GAS_SMOKE_EFFECT) block = 1 + if(!block && !wear_mask) + breath = loc.remove_air(breath_moles, 0) + else + breath = loc.remove_air(breath_moles, wear_mask.gas_filter_strength) //Filters out harmful gases + + if(!is_lung_ruptured()) + if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) + if(prob(5)) + rupture_lung() + if(!block) for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 675f2c76a5..84228208c9 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -225,7 +225,6 @@ breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) else if(istype(loc, /turf/)) var/breath_moles = environment.total_moles()*BREATH_PERCENTAGE - breath = loc.remove_air(breath_moles) // Handle chem smoke effect -- Doohl var/block = 0 @@ -233,6 +232,11 @@ if(istype(wear_mask, /obj/item/clothing/mask/gas)) block = 1 + if(!block) + breath = loc.remove_air(breath_moles, 0) + else + breath = loc.remove_air(breath_moles, wear_mask.gas_filter_strength) //Filters out harmful gases + if(!block) for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3442a7fba5..c978045198 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -262,6 +262,7 @@ blinded = 0 eye_blind = 0 eye_blurry = 0 + eye_stat = 0 ear_deaf = 0 ear_damage = 0 heal_overall_damage(1000, 1000) From 44540ab61fe55fe7db210e8c5c8a5d2fa6de1967 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 21:10:39 +0100 Subject: [PATCH 07/18] Recommitting PA sprites by Flash Kirby. --- .../modules/awaymissions/bluespaceartillery.dm | 2 +- .../particle_accelerator/particle.dm | 2 +- .../particle_accelerator.dm | 4 ++-- .../particle_accelerator/particle_chamber.dm | 2 +- .../particle_accelerator/particle_control.dm | 2 +- .../particle_accelerator/particle_emitter.dm | 2 +- .../particle_accelerator/particle_power.dm | 2 +- icons/obj/machines/particle_accelerator2.dmi | Bin 0 -> 126917 bytes 8 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 icons/obj/machines/particle_accelerator2.dmi diff --git a/code/modules/awaymissions/bluespaceartillery.dm b/code/modules/awaymissions/bluespaceartillery.dm index 06dfa6b5bc..21df3f1fd3 100644 --- a/code/modules/awaymissions/bluespaceartillery.dm +++ b/code/modules/awaymissions/bluespaceartillery.dm @@ -3,7 +3,7 @@ var/reload = 180 name = "bluespace artillery control" icon_state = "control_boxp1" - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' density = 1 anchored = 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index da4a32782b..0fc32904ab 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -3,7 +3,7 @@ /obj/effect/accelerated_particle name = "Accelerated Particles" desc = "Small things moving very fast." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "particle"//Need a new icon for this anchored = 1 density = 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 852d5f93ea..a78a964870 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -60,7 +60,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/structure/particle_accelerator name = "Particle Accelerator" desc = "Part of a Particle Accelerator." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "none" anchored = 0 density = 1 @@ -258,7 +258,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator name = "Particle Accelerator" desc = "Part of a Particle Accelerator." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "none" anchored = 0 density = 1 diff --git a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm index 8d8e23e996..4df3a92c46 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm @@ -1,7 +1,7 @@ /obj/structure/particle_accelerator/fuel_chamber name = "EM Acceleration Chamber" desc_holder = "This is where the Alpha particles are accelerated to radical speeds." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "fuel_chamber" reference = "fuel_chamber" diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 04163d4859..12dc2f5f22 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -3,7 +3,7 @@ /obj/machinery/particle_accelerator/control_box name = "Particle Accelerator Control Computer" desc = "This controls the density of the particles." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "control_box" reference = "control_box" anchored = 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index f91b92a55e..01666774a9 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -3,7 +3,7 @@ /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 = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "none" var/fire_delay = 50 var/last_shot = 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle_power.dm b/code/modules/power/singularity/particle_accelerator/particle_power.dm index e6deff37dd..a4dcb561e7 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_power.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_power.dm @@ -1,7 +1,7 @@ /obj/structure/particle_accelerator/power_box name = "Particle Focusing EM Lens" desc_holder = "This uses electromagnetic waves to focus the Alpha-Particles." - icon = 'icons/obj/machines/particle_accelerator.dmi' + icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "power_box" reference = "power_box" diff --git a/icons/obj/machines/particle_accelerator2.dmi b/icons/obj/machines/particle_accelerator2.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ace6526b6011151f1ef58c1854f4020f741be40d GIT binary patch literal 126917 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%0D)_ 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 z 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 LPp#^XP00TM1(`D2 literal 0 HcmV?d00001 From c872099e11ad5edf47eda19cd78f059378b3ca83 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 21:23:37 +0100 Subject: [PATCH 08/18] Overdose added. Most chemicals over 30 units now cause constant toxic damage. Alcohol tweaked, excessive alcohol is poisonous. Chemistry-Reagents reorganized. Side effects removed. All toxins moved to toxins parent. --- baystation12.dme | 1 - code/game/machinery/cloning.dm | 2 +- code/modules/reagents/Chemistry-Holder.dm | 21 + code/modules/reagents/Chemistry-Reagents.dm | 3110 +++++++++---------- code/setup.dm | 4 +- 5 files changed, 1567 insertions(+), 1571 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 0235a3daba..4c31adaf3c 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1335,7 +1335,6 @@ #include "code\WorkInProgress\Cael_Aislinn\Supermatter\SuperMatter.dm" #include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm" #include "code\WorkInProgress\Chinsky\ashtray.dm" -#include "code\WorkInProgress\Cib\MedicalSideEffects.dm" #include "code\WorkInProgress\kilakk\fax.dm" #include "code\WorkInProgress\Mini\ATM.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index fd66d0c2c3..e643fb5e24 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -334,7 +334,7 @@ src.icon_state = "pod_0" src.eject_wait = 0 //If it's still set somehow. domutcheck(src.occupant) //Waiting until they're out before possible monkeyizing. - src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free. +// src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free. src.occupant = null src.biomass -= CLONE_BIOMASS diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 2fb6d0c27f..504461fed7 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -506,6 +506,27 @@ datum return res + remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included. + if(!isnum(amount)) return 1 + + var/has_removed_reagent = 0 + + for(var/datum/reagent/R in reagent_list) + var/matches = 0 + // Switch between how we check the reagent type + if(strict) + if(R.type == reagent_type) + matches = 1 + else + if(istype(R, reagent_type)) + matches = 1 + // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. + if(matches) + // Have our other proc handle removement + has_removed_reagent = remove_reagent(R.id, amount, safety) + + return has_removed_reagent + //two helper functions to preserve data across reactions (needed for xenoarch) get_data(var/reagent_id) for(var/datum/reagent/D in reagent_list) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9f52fe6dd8..41c6443585 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -19,8 +19,9 @@ datum var/list/data = null var/volume = 0 var/nutriment_factor = 0 - var/custom_metabolism = REAGENTS_METABOLISM - var/mildly_toxic = 0 + var/custom_metabolism = REAGENTS_METABOLISM //Default 0.2 + var/overdose = 0 + var/overdose_dam = 1 //var/list/viruses = list() var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!) @@ -70,36 +71,25 @@ datum on_mob_life(var/mob/living/M as mob) if(!istype(M, /mob/living)) return //Noticed runtime errors from pacid trying to damage ghosts, this should fix. --NEO - // Certain elements in too large amounts cause side-effects - - if(mildly_toxic && istype(M, /mob/living/carbon/human/)) - var/mob/living/carbon/human/H = M - if(H.side_effects.len == 0) - M.add_side_effect(pick("Headache", "Bad Stomach", "Itch")) - + if( (overdose > 0) && (volume >= overdose))//Overdosing, wooo + M.adjustToxLoss(overdose_dam) holder.remove_reagent(src.id, custom_metabolism) //By default it slowly disappears. return on_move(var/mob/M) return + // Called after add_reagents creates a new reagent. + on_new(var/data) + return + + // Called when two reagents of the same are mixing. + on_merge(var/data) + return + on_update(var/atom/A) return - slimejelly - name = "Slime Jelly" - id = "slimejelly" - description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." - reagent_state = LIQUID - color = "#801E28" // rgb: 128, 30, 40 - on_mob_life(var/mob/living/M as mob) - if(prob(10)) - M << "\red Your insides are burning!" - M.adjustToxLoss(rand(20,60)*REM) - else if(prob(40)) - M.heal_organ_damage(5*REM,0) - ..() - return blood @@ -260,12 +250,29 @@ datum cube.Expand() return + water/holywater + name = "Holy Water" + id = "holywater" + description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality." + color = "#E0E8EF" // rgb: 224, 232, 239 + + on_mob_life(var/mob/living/M as mob) + if(ishuman(M)) + if((M.mind in ticker.mode.cult) && prob(10)) + M << "\blue A cooling sensation from inside you brings you an untold calmness." + ticker.mode.remove_cultist(M.mind) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\blue []'s eyes blink and become clearer.", M), 1) // So observers know it worked. + holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls. + return + lube name = "Space Lube" id = "lube" description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." reagent_state = LIQUID color = "#009CA8" // rgb: 0, 156, 168 + overdose = REAGENTS_OVERDOSE reaction_turf(var/turf/simulated/T, var/volume) if (!istype(T)) return @@ -281,56 +288,6 @@ datum T.wet_overlay = null return - anti_toxin - name = "Anti-Toxin (Dylovene)" - id = "anti_toxin" - description = "Dylovene is a broad-spectrum antitoxin." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.drowsyness = max(M.drowsyness-2*REM, 0) - if(holder.has_reagent("toxin")) - holder.remove_reagent("toxin", 2*REM) - if(holder.has_reagent("stoxin")) - holder.remove_reagent("stoxin", 2*REM) - if(holder.has_reagent("plasma")) - holder.remove_reagent("plasma", 1*REM) - if(holder.has_reagent("sacid")) - holder.remove_reagent("sacid", 1*REM) - if(holder.has_reagent("cyanide")) - holder.remove_reagent("cyanide", 1*REM) - if(holder.has_reagent("amatoxin")) - holder.remove_reagent("amatoxin", 2*REM) - if(holder.has_reagent("chloralhydrate")) - holder.remove_reagent("chloralhydrate", 5*REM) - if(holder.has_reagent("carpotoxin")) - holder.remove_reagent("carpotoxin", 1*REM) - if(holder.has_reagent("zombiepowder")) - holder.remove_reagent("zombiepowder", 0.5*REM) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 2*REM) - M.hallucination = max(0, M.hallucination - 5*REM) - M.adjustToxLoss(-2*REM) - ..() - return - - toxin - name = "Toxin" - id = "toxin" - description = "A Toxic chemical." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - custom_metabolism = 0.01 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - // Toxins are really weak, but without being treated, last very long. - M.adjustToxLoss(0.2) - ..() - return - plasticide name = "Plasticide" id = "plasticide" @@ -346,43 +303,13 @@ datum ..() return - cyanide - // Fast and lethal - name = "Cyanide" - id = "cyanide" - description = "A highly toxic chemical." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - custom_metabolism = 0.4 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(4) - M.adjustOxyLoss(4) - M.sleeping += 1 - ..() - return - - minttoxin - name = "Mint Toxin" - id = "minttoxin" - description = "Useful for dealing with undesirable customers." - reagent_state = LIQUID - color = "#CF3600" // rgb: 207, 54, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if (FAT in M.mutations) - M.gib() - ..() - return - slimetoxin name = "Mutation Toxin" id = "mutationtoxin" description = "A corruptive toxin produced by slimes." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -401,6 +328,7 @@ datum description = "An advanced corruptive toxin produced by slimes." reagent_state = LIQUID color = "#13BC5E" // rgb: 19, 188, 94 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -430,36 +358,13 @@ datum ..() return - stoxin - name = "Sleep Toxin" - id = "stoxin" - description = "An effective hypnotic used to treat insomnia." - reagent_state = LIQUID - color = "#E895CC" // rgb: 232, 149, 204 - - custom_metabolism = 0.1 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.eye_blurry = max(M.eye_blurry, 10) - if(15 to 25) - M.drowsyness = max(M.drowsyness, 20) - if(25 to INFINITY) - M.Paralyse(20) - M.drowsyness = max(M.drowsyness, 30) - data++ - ..() - return - srejuvenate name = "Soporific Rejuvenant" id = "stoxin2" description = "Put people to sleep, and heals them." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -493,6 +398,7 @@ datum description = "Inaprovaline is a synaptic stimulant and cardiostimulant. Commonly used to stabilize patients." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE*2 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -507,6 +413,7 @@ datum description = "An illegal chemical compound used as drug." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -518,29 +425,13 @@ datum holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) return - holywater - name = "Holy Water" - id = "holywater" - description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality." - reagent_state = LIQUID - color = "#0064C8" // rgb: 0, 100, 200 - - on_mob_life(var/mob/living/M as mob) - if(ishuman(M)) - if((M.mind in ticker.mode.cult) && prob(10)) - M << "\blue A cooling sensation from inside you brings you an untold calmness." - ticker.mode.remove_cultist(M.mind) - for(var/mob/O in viewers(M, null)) - O.show_message(text("\blue []'s eyes blink and become clearer.", M), 1) // So observers know it worked. - holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls. - return - serotrotium name = "Serotrotium" id = "serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." reagent_state = LIQUID color = "#202040" // rgb: 20, 20, 40 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(ishuman(M)) @@ -599,7 +490,6 @@ datum description = "A highly ductile metal." color = "#6E3B08" // rgb: 110, 59, 8 - mildly_toxic = 1 custom_metabolism = 0.01 nitrogen @@ -609,7 +499,6 @@ datum reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 - mildly_toxic = 1 custom_metabolism = 0.01 hydrogen @@ -619,7 +508,6 @@ datum reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 - mildly_toxic = 1 custom_metabolism = 0.01 potassium @@ -629,8 +517,6 @@ datum reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 - - mildly_toxic = 1 custom_metabolism = 0.01 mercury @@ -639,12 +525,14 @@ datum description = "A chemical element." reagent_state = LIQUID color = "#484848" // rgb: 72, 72, 72 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(M.canmove && !M.restrained() && istype(M.loc, /turf/space)) step(M, pick(cardinal)) if(prob(5)) M.emote(pick("twitch","drool","moan")) + M.adjustBrainLoss(2) ..() return @@ -655,7 +543,6 @@ datum reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 - mildly_toxic = 1 custom_metabolism = 0.01 carbon @@ -665,7 +552,6 @@ datum reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 - mildly_toxic = 1 custom_metabolism = 0.01 reaction_turf(var/turf/T, var/volume) @@ -679,6 +565,7 @@ datum description = "A chemical element." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -692,6 +579,7 @@ datum description = "A highly-reactive chemical element." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -706,7 +594,6 @@ datum reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 - mildly_toxic = 1 custom_metabolism = 0.01 phosphorus @@ -716,7 +603,6 @@ datum reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 - mildly_toxic = 1 custom_metabolism = 0.01 lithium @@ -725,6 +611,7 @@ datum description = "A chemical element." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -746,156 +633,6 @@ datum ..() return - sacid - name = "Sulphuric acid" - id = "sacid" - description = "A strong mineral acid with the molecular formula H2SO4." - reagent_state = LIQUID - color = "#DB5008" // rgb: 219, 80, 8 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1*REM) - M.take_organ_damage(0, 1*REM) - ..() - return - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return - if(method == TOUCH) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(H.wear_mask) - if(!H.wear_mask.unacidable) - del (H.wear_mask) - H.update_inv_wear_mask() - H << "\red Your mask melts away but protects you from the acid!" - else - H << "\red Your mask protects you from the acid!" - return - - if(H.head) - if(prob(15) && !H.head.unacidable) - del(H.head) - H.update_inv_head() - H << "\red Your helmet melts away but protects you from the acid" - else - H << "\red Your helmet protects you from the acid!" - return - - else if(ismonkey(M)) - var/mob/living/carbon/monkey/MK = M - if(MK.wear_mask) - if(!MK.wear_mask.unacidable) - del (MK.wear_mask) - MK.update_inv_wear_mask() - MK << "\red Your mask melts away but protects you from the acid!" - else - MK << "\red Your mask protects you from the acid!" - return - - if(!M.unacidable) - if(prob(15) && istype(M, /mob/living/carbon/human) && volume >= 30) - var/mob/living/carbon/human/H = M - var/datum/organ/external/affecting = H.get_organ("head") - if(affecting) - if(affecting.take_damage(25, 0)) - H.UpdateDamageIcon() - H.status_flags |= DISFIGURED - H.emote("scream") - else - M.take_organ_damage(min(15, volume * 2)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl - else - if(!M.unacidable) - M.take_organ_damage(min(15, volume * 2)) - - reaction_obj(var/obj/O, var/volume) - if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(10)) - if(!O.unacidable) - var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) - I.desc = "Looks like this was \an [O] some time ago." - for(var/mob/M in viewers(5, O)) - M << "\red \the [O] melts." - del(O) - - pacid - name = "Polytrinic acid" - id = "pacid" - description = "Polytrinic acid is a an extremely corrosive chemical substance." - reagent_state = LIQUID - color = "#8E18A9" // rgb: 142, 24, 169 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1*REM) - ..() - return - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - if(!istype(M, /mob/living)) - return //wooo more runtime fixin - if(method == TOUCH) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(H.wear_mask) - if(!H.wear_mask.unacidable) - del (H.wear_mask) - H.update_inv_wear_mask() - H << "\red Your mask melts away but protects you from the acid!" - else - H << "\red Your mask protects you from the acid!" - return - - if(H.head) - if(prob(15) && !H.head.unacidable) - del(H.head) - H.update_inv_head() - H << "\red Your helmet melts away but protects you from the acid" - else - H << "\red Your helmet protects you from the acid!" - return - - if(!H.unacidable) - var/datum/organ/external/affecting = H.get_organ("head") - if(affecting.take_damage(15, 0)) - H.UpdateDamageIcon() - H.emote("scream") - else if(ismonkey(M)) - var/mob/living/carbon/monkey/MK = M - - if(MK.wear_mask) - if(!MK.wear_mask.unacidable) - del (MK.wear_mask) - MK.update_inv_wear_mask() - MK << "\red Your mask melts away but protects you from the acid!" - else - MK << "\red Your mask protects you from the acid!" - return - - if(!MK.unacidable) - MK.take_organ_damage(min(15, volume * 4)) // same deal as sulphuric acid - else - if(!M.unacidable) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/datum/organ/external/affecting = H.get_organ("head") - if(affecting.take_damage(15, 0)) - H.UpdateDamageIcon() - H.emote("scream") - H.status_flags |= DISFIGURED - else - M.take_organ_damage(min(15, volume * 4)) - - reaction_obj(var/obj/O, var/volume) - if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom))) - if(!O.unacidable) - var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) - I.desc = "Looks like this was \an [O] some time ago." - for(var/mob/M in viewers(5, O)) - M << "\red \the [O] melts." - del(O) glycerol name = "Glycerol" @@ -904,7 +641,6 @@ datum reagent_state = LIQUID color = "#808080" // rgb: 128, 128, 128 - mildly_toxic = 1 custom_metabolism = 0.01 nitroglycerin @@ -914,7 +650,6 @@ datum reagent_state = LIQUID color = "#808080" // rgb: 128, 128, 128 - mildly_toxic = 1 custom_metabolism = 0.01 radium @@ -955,6 +690,7 @@ datum description = "Ryetalyn can cure all genetic abnomalities." reagent_state = SOLID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -995,39 +731,13 @@ datum ..() return - mutagen - name = "Unstable mutagen" - id = "mutagen" - description = "Might cause unpredictable mutations. Keep away from children." - reagent_state = LIQUID - color = "#13BC5E" // rgb: 19, 188, 94 - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(!..()) return - if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - src = null - if((method==TOUCH && prob(33)) || method==INGEST) - randmuti(M) - if(prob(98)) - randmutb(M) - else - randmutg(M) - domutcheck(M, null) - updateappearance(M,M.dna.uni_identity) - return - on_mob_life(var/mob/living/M as mob) - if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. - if(!M) M = holder.my_atom - M.apply_effect(10,IRRADIATE,0) - ..() - return - tramadol name = "Tramadol" id = "tramadol" description = "A simple, yet effective painkiller." reagent_state = LIQUID color = "#C8A5DC" + overdose = REAGENTS_OVERDOSE oxycodone name = "Oxycodone" @@ -1035,6 +745,7 @@ datum description = "An effective and very addictive painkiller." reagent_state = LIQUID color = "#C805DC" + overdose = REAGENTS_OVERDOSE virus_food name = "Virus Food" @@ -1078,19 +789,7 @@ datum description = "Pure iron is a metal." reagent_state = SOLID color = "#C8A5DC" // rgb: 200, 165, 220 -/* - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if((M.virus) && (prob(8) && (M.virus.name=="Magnitis"))) - if(M.virus.spread == "Airborne") - M.virus.spread = "Remissive" - M.virus.stage-- - if(M.virus.stage <= 0) - M.resistances += M.virus.type - M.virus = null - holder.remove_reagent(src.id, 0.2) - return -*/ + overdose = REAGENTS_OVERDOSE gold name = "Gold" @@ -1119,7 +818,6 @@ datum ..() return - reaction_turf(var/turf/T, var/volume) src = null if(volume >= 3) @@ -1146,6 +844,7 @@ datum description = "Required for welders. Flamable." reagent_state = LIQUID color = "#660000" // rgb: 102, 0, 0 + overdose = REAGENTS_OVERDOSE reaction_obj(var/obj/O, var/volume) @@ -1162,13 +861,13 @@ datum ..() return - space_cleaner name = "Space cleaner" id = "cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" reagent_state = LIQUID color = "#A5F0EE" // rgb: 165, 240, 238 + overdose = REAGENTS_OVERDOSE reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/effect/decal/cleanable)) @@ -1212,96 +911,13 @@ datum H.update_inv_shoes(0) M.clean_blood() - plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - description = "A harmful toxic mixture to kill plantlife. Do not ingest!" - reagent_state = LIQUID - color = "#49002E" // rgb: 73, 0, 46 - - on_mob_life(var/mob/living/carbon/M) - if(!M) M = holder.my_atom - M.adjustToxLoss(1.0) - ..() - return - - // Clear off wallrot fungi - reaction_turf(var/turf/T, var/volume) - if(istype(T, /turf/simulated/wall)) - var/turf/simulated/wall/W = T - if(W.rotting) - W.rotting = 0 - for(var/obj/effect/E in W) if(E.name == "Wallrot") del E - - for(var/mob/O in viewers(W, null)) - O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/effect/alien/weeds/)) - var/obj/effect/alien/weeds/alien_weeds = O - alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast - alien_weeds.healthcheck() - else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) - else if(istype(O,/obj/effect/spacevine)) - if(prob(50)) del(O) //Kills kudzu too. - // Damage that is done to growing plants is separately - // at code/game/machinery/hydroponics at obj/item/hydroponics - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - src = null - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.wear_mask) // If not wearing a mask - C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.dna) - if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage - H.adjustToxLoss(10) - - plasma - name = "Plasma" - id = "plasma" - description = "Plasma in its liquid form." - reagent_state = LIQUID - color = "#E71B00" // rgb: 231, 27, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(holder.has_reagent("inaprovaline")) - holder.remove_reagent("inaprovaline", 2*REM) - M.adjustToxLoss(3*REM) - ..() - return - reaction_obj(var/obj/O, var/volume) - src = null - /*if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime)) - var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O - if (egg.grown) - egg.Hatch()*/ - if((!O) || (!volume)) return 0 - var/turf/the_turf = get_turf(O) - var/datum/gas_mixture/napalm = new - var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 - napalm.trace_gases += fuel - the_turf.assume_air(napalm) - reaction_turf(var/turf/T, var/volume) - src = null - var/datum/gas_mixture/napalm = new - var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 - napalm.trace_gases += fuel - T.assume_air(napalm) - return - leporazine name = "Leporazine" id = "leporazine" description = "Leporazine can be use to stabilize an individuals body temperature." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1318,6 +934,7 @@ datum description = "Cryptobiolin causes confusion and dizzyness." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1328,23 +945,6 @@ datum ..() return - lexorin - name = "Lexorin" - id = "lexorin" - description = "Lexorin temporarily stops respiration. Causes tissue damage." - reagent_state = LIQUID - color = "#C8A5DC" // rgb: 200, 165, 220 - - on_mob_life(var/mob/living/M as mob) - if(M.stat == 2.0) - return - if(!M) M = holder.my_atom - if(prob(33)) - M.take_organ_damage(1*REM, 0) - M.adjustOxyLoss(3) - if(prob(20)) M.emote("gasp") - ..() - return kelotane name = "Kelotane" @@ -1352,6 +952,7 @@ datum description = "Kelotane is a drug used to treat burns." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) @@ -1367,6 +968,7 @@ datum description = "Dermaline is the next step in burn medication. Works twice as good as kelotane and enables the body to restore even the direst heat-damaged tissue." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE/2 on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN @@ -1382,6 +984,7 @@ datum description = "Dexalin is used in the treatment of oxygen deprivation." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) @@ -1399,6 +1002,7 @@ datum description = "Dexalin Plus is used in the treatment of oxygen deprivation. Its highly effective." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE/2 on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) @@ -1428,6 +1032,22 @@ datum ..() return + anti_toxin + name = "Anti-Toxin (Dylovene)" + id = "anti_toxin" + description = "Dylovene is a broad-spectrum antitoxin." + reagent_state = LIQUID + color = "#C8A5DC" // rgb: 200, 165, 220 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.reagents.remove_all_type(/datum/reagent/toxin, 1*REM, 0, 1) + M.drowsyness = max(M.drowsyness-2*REM, 0) + M.hallucination = max(0, M.hallucination - 5*REM) + M.adjustToxLoss(-2*REM) + ..() + return + adminordrazine //An OP chemical for admins name = "Adminordrazine" id = "adminordrazine" @@ -1437,43 +1057,19 @@ datum on_mob_life(var/mob/living/carbon/M as mob) if(!M) M = holder.my_atom ///This can even heal dead people. + M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1) M.setCloneLoss(0) M.setOxyLoss(0) M.radiation = 0 M.heal_organ_damage(5,5) M.adjustToxLoss(-5) - if(holder.has_reagent("toxin")) - holder.remove_reagent("toxin", 5) - if(holder.has_reagent("stoxin")) - holder.remove_reagent("stoxin", 5) - if(holder.has_reagent("plasma")) - holder.remove_reagent("plasma", 5) - if(holder.has_reagent("sacid")) - holder.remove_reagent("sacid", 5) - if(holder.has_reagent("pacid")) - holder.remove_reagent("pacid", 5) - if(holder.has_reagent("cyanide")) - holder.remove_reagent("cyanide", 5) - if(holder.has_reagent("lexorin")) - holder.remove_reagent("lexorin", 5) - if(holder.has_reagent("amatoxin")) - holder.remove_reagent("amatoxin", 5) - if(holder.has_reagent("chloralhydrate")) - holder.remove_reagent("chloralhydrate", 5) - if(holder.has_reagent("carpotoxin")) - holder.remove_reagent("carpotoxin", 5) - if(holder.has_reagent("zombiepowder")) - holder.remove_reagent("zombiepowder", 5) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) M.hallucination = 0 M.setBrainLoss(0) M.disabilities = 0 M.sdisabilities = 0 M.eye_blurry = 0 M.eye_blind = 0 -// M.disabilities &= ~NEARSIGHTED //doesn't even do anythig cos of the disabilities = 0 bit -// M.sdisabilities &= ~BLIND //doesn't even do anythig cos of the sdisabilities = 0 bit + M.eye_stat = 0 M.SetWeakened(0) M.SetStunned(0) M.SetParalysis(0) @@ -1499,6 +1095,7 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.01 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1513,13 +1110,13 @@ datum ..() return - impedrezene name = "Impedrezene" id = "impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1537,6 +1134,7 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.05 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1551,6 +1149,7 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.05 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) @@ -1570,6 +1169,7 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.05 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1583,6 +1183,7 @@ datum description = "Heals eye damage" reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1600,6 +1201,7 @@ datum description = "Bicaridine is an analgesic medication and can be used to treat blunt trauma." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(M.stat == 2.0) @@ -1616,6 +1218,7 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.03 + overdose = REAGENTS_OVERDOSE/2 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1663,6 +1266,7 @@ datum description = "A powder derived from fish toxin, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1691,61 +1295,12 @@ datum reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 custom_metabolism = 0.01 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) ..() return - carpotoxin - name = "Carpotoxin" - id = "carpotoxin" - description = "A deadly neurotoxin produced by the dreaded spess carp." - reagent_state = LIQUID - color = "#003333" // rgb: 0, 51, 51 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(2*REM) - ..() - return - - zombiepowder - name = "Zombie Powder" - id = "zombiepowder" - description = "A strong neurotoxin that puts the subject into a death-like state." - color = "#669900" // rgb: 102, 153, 0 - - on_mob_life(var/mob/living/carbon/M as mob) - if(!M) M = holder.my_atom - M.status_flags |= FAKEDEATH - M.adjustOxyLoss(0.5*REM) - M.adjustToxLoss(0.5*REM) - M.Weaken(10) - M.silent = max(M.silent, 10) - M.tod = worldtime2text() - ..() - return - - Del() - if(holder && ismob(holder.my_atom)) - var/mob/M = holder.my_atom - M.status_flags &= ~FAKEDEATH - ..() - - mindbreaker - name = "Mindbreaker Toxin" - id = "mindbreaker" - description = "A powerful hallucinogen. Not a thing to be messed with." - reagent_state = LIQUID - color = "#B31008" // rgb: 139, 166, 233 - custom_metabolism = 0.05 - - on_mob_life(var/mob/living/M) - if(!M) M = holder.my_atom - M.hallucination += 10 - ..() - return - /////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1780,19 +1335,14 @@ datum if( (prob(10) && method==TOUCH) || method==INGEST) M.contract_disease(new /datum/disease/xeno_transformation(0),1) -//foam precursor - - fluorosurfactant + fluorosurfactant//foam precursor name = "Fluorosurfactant" id = "fluorosurfactant" description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." reagent_state = LIQUID color = "#9E6B38" // rgb: 158, 107, 56 -// metal foaming agent -// this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually - - foaming_agent + foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. name = "Foaming agent" id = "foaming_agent" description = "A agent that yields metallic foam when mixed with light metal and a strong acid." @@ -1805,41 +1355,7 @@ datum description = "A highly addictive stimulant extracted from the tobacco plant." reagent_state = LIQUID color = "#181818" // rgb: 24, 24, 24 -/* - ethanol - name = "Ethanol" - id = "ethanol" - description = "A well-known alcohol with a variety of applications." - reagent_state = LIQUID - color = "#404030" // rgb: 64, 64, 48 - on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.make_dizzy(5) - M.jitteriness = max(M.jitteriness-5,0) - if(data >= 25) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 4 - if(data >= 40 && prob(33)) - if (!M.confused) M.confused = 1 - M.confused += 3 - ..() - return - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/item/weapon/paper)) - var/obj/item/weapon/paper/paperaffected = O - paperaffected.clearpaper() - usr << "The solution melts away the ink on the paper." - if(istype(O,/obj/item/weapon/book)) - if(volume >= 5) - var/obj/item/weapon/book/affectedbook = O - affectedbook.dat = null - usr << "The solution melts away the ink on the book." - else - usr << "It wasn't enough..." - return -*/ ammonia name = "Ammonia" id = "ammonia" @@ -1860,12 +1376,13 @@ datum reagent_state = LIQUID color = "#604030" // rgb: 96, 64, 48 - ethylredoxrazine // FUCK YOU, ALCOHOL + ethylredoxrazine // FUCK YOU, ALCOHOL name = "Ethylredoxrazine" id = "ethylredoxrazine" description = "A powerful oxidizer that reacts with ethanol." reagent_state = SOLID color = "#605048" // rgb: 96, 80, 72 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1873,15 +1390,292 @@ datum M.drowsyness = 0 M.stuttering = 0 M.confused = 0 + M.reagents.remove_all_type(/datum/reagent/ethanol, 1*REM, 0, 1) ..() return - chloralhydrate //Otherwise known as a "Mickey Finn" +//////////////////////////Poison stuff/////////////////////// + + toxin + name = "Toxin" + id = "toxin" + description = "A toxic chemical." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + var/toxpwr = 0.7 // Toxins are really weak, but without being treated, last very long. + custom_metabolism = 0.1 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(toxpwr) + M.adjustToxLoss(toxpwr*REM) + ..() + return + + toxin/amatoxin + name = "Amatoxin" + id = "amatoxin" + description = "A powerful poison derived from certain species of mushroom." + reagent_state = LIQUID + color = "#792300" // rgb: 121, 35, 0 + toxpwr = 1 + + toxin/mutagen + name = "Unstable mutagen" + id = "mutagen" + description = "Might cause unpredictable mutations. Keep away from children." + reagent_state = LIQUID + color = "#13BC5E" // rgb: 19, 188, 94 + toxpwr = 0 + + reaction_mob(var/mob/living/carbon/M, var/method=TOUCH, var/volume) + if(!..()) return + if(!istype(M) || !M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. + src = null + if((method==TOUCH && prob(33)) || method==INGEST) + randmuti(M) + if(prob(98)) randmutb(M) + else randmutg(M) + domutcheck(M, null) + updateappearance(M,M.dna.uni_identity) + return + on_mob_life(var/mob/living/carbon/M) + if(!istype(M)) return + if(!M) M = holder.my_atom + M.apply_effect(10,IRRADIATE,0) + ..() + return + + toxin/plasma + name = "Plasma" + id = "plasma" + description = "Plasma in its liquid form." + reagent_state = LIQUID + color = "#E71B00" // rgb: 231, 27, 0 + toxpwr = 3 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(holder.has_reagent("inaprovaline")) + holder.remove_reagent("inaprovaline", 2*REM) + ..() + return + reaction_obj(var/obj/O, var/volume) + src = null + /*if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime)) + var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O + if (egg.grown) + egg.Hatch()*/ + if((!O) || (!volume)) return 0 + var/turf/the_turf = get_turf(O) + var/datum/gas_mixture/napalm = new + var/datum/gas/volatile_fuel/fuel = new + fuel.moles = 5 + napalm.trace_gases += fuel + the_turf.assume_air(napalm) + reaction_turf(var/turf/T, var/volume) + src = null + var/datum/gas_mixture/napalm = new + var/datum/gas/volatile_fuel/fuel = new + fuel.moles = 5 + napalm.trace_gases += fuel + T.assume_air(napalm) + return + + toxin/lexorin + name = "Lexorin" + id = "lexorin" + description = "Lexorin temporarily stops respiration. Causes tissue damage." + reagent_state = LIQUID + color = "#C8A5DC" // rgb: 200, 165, 220 + toxpwr = 0 + overdose = REAGENTS_OVERDOSE + + on_mob_life(var/mob/living/M as mob) + if(M.stat == 2.0) + return + if(!M) M = holder.my_atom + if(prob(33)) + M.take_organ_damage(1*REM, 0) + M.adjustOxyLoss(3) + if(prob(20)) M.emote("gasp") + ..() + return + + toxin/slimejelly + name = "Slime Jelly" + id = "slimejelly" + description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." + reagent_state = LIQUID + color = "#801E28" // rgb: 128, 30, 40 + toxpwr = 0 + + on_mob_life(var/mob/living/M as mob) + if(prob(10)) + M << "\red Your insides are burning!" + M.adjustToxLoss(rand(20,60)*REM) + else if(prob(40)) + M.heal_organ_damage(5*REM,0) + ..() + return + + toxin/cyanide //Fast and Lethal + name = "Cyanide" + id = "cyanide" + description = "A highly toxic chemical." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + toxpwr = 4 + custom_metabolism = 0.4 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustOxyLoss(4*REM) + M.sleeping += 1 + ..() + return + + toxin/minttoxin + name = "Mint Toxin" + id = "minttoxin" + description = "Useful for dealing with undesirable customers." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + toxpwr = 0 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if (FAT in M.mutations) + M.gib() + ..() + return + + toxin/carpotoxin + name = "Carpotoxin" + id = "carpotoxin" + description = "A deadly neurotoxin produced by the dreaded spess carp." + reagent_state = LIQUID + color = "#003333" // rgb: 0, 51, 51 + toxpwr = 2 + + toxin/zombiepowder + name = "Zombie Powder" + id = "zombiepowder" + description = "A strong neurotoxin that puts the subject into a death-like state." + reagent_state = SOLID + color = "#669900" // rgb: 102, 153, 0 + toxpwr = 0.5 + + on_mob_life(var/mob/living/carbon/M as mob) + if(!M) M = holder.my_atom + M.status_flags |= FAKEDEATH + M.adjustOxyLoss(0.5*REM) + M.Weaken(10) + M.silent = max(M.silent, 10) + M.tod = worldtime2text() + ..() + return + + Del() + if(holder && ismob(holder.my_atom)) + var/mob/M = holder.my_atom + M.status_flags &= ~FAKEDEATH + ..() + + toxin/mindbreaker + name = "Mindbreaker Toxin" + id = "mindbreaker" + description = "A powerful hallucinogen. Not a thing to be messed with." + reagent_state = LIQUID + color = "#B31008" // rgb: 139, 166, 233 + toxpwr = 0 + custom_metabolism = 0.05 + overdose = REAGENTS_OVERDOSE + + on_mob_life(var/mob/living/M) + if(!M) M = holder.my_atom + M.hallucination += 10 + ..() + return + + toxin/plantbgone + name = "Plant-B-Gone" + id = "plantbgone" + description = "A harmful toxic mixture to kill plantlife. Do not ingest!" + reagent_state = LIQUID + color = "#49002E" // rgb: 73, 0, 46 + toxpwr = 1 + + // Clear off wallrot fungi + reaction_turf(var/turf/T, var/volume) + if(istype(T, /turf/simulated/wall)) + var/turf/simulated/wall/W = T + if(W.rotting) + W.rotting = 0 + for(var/obj/effect/E in W) if(E.name == "Wallrot") del E + + for(var/mob/O in viewers(W, null)) + O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) + + reaction_obj(var/obj/O, var/volume) + if(istype(O,/obj/effect/alien/weeds/)) + var/obj/effect/alien/weeds/alien_weeds = O + alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast + alien_weeds.healthcheck() + else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it + del(O) + else if(istype(O,/obj/effect/spacevine)) + if(prob(50)) del(O) //Kills kudzu too. + // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics + + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + src = null + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.wear_mask) // If not wearing a mask + C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.dna) + if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage + H.adjustToxLoss(10) + + toxin/stoxin + name = "Sleep Toxin" + id = "stoxin" + description = "An effective hypnotic used to treat insomnia." + reagent_state = LIQUID + color = "#E895CC" // rgb: 232, 149, 204 + toxpwr = 0 + custom_metabolism = 0.1 + overdose = REAGENTS_OVERDOSE + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + switch(data) + if(1 to 12) + if(prob(5)) M.emote("yawn") + if(12 to 15) + M.eye_blurry = max(M.eye_blurry, 10) + if(15 to 25) + M.drowsyness = max(M.drowsyness, 20) + if(25 to INFINITY) + M.Paralyse(20) + M.drowsyness = max(M.drowsyness, 30) + data++ + ..() + return + + toxin/chloralhydrate name = "Chloral Hydrate" id = "chloralhydrate" description = "A powerful sedative." reagent_state = SOLID color = "#000067" // rgb: 0, 0, 103 + toxpwr = 0 + custom_metabolism = 0.1 //Default 0.2 + overdose = REAGENTS_OVERDOSE/2 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1895,17 +1689,18 @@ datum M.sleeping += 1 if(51 to INFINITY) M.sleeping += 1 - M:toxloss += (data - 50) + M.adjustToxLoss((data - 50)*REM) ..() - return - beer2 //copypasta of chloral hydrate, disguised as normal beer for use by emagged brobots + toxin/beer2 //disguised as normal beer for use by emagged brobots name = "Beer" id = "beer2" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." reagent_state = LIQUID color = "#664300" // rgb: 102, 67, 0 + custom_metabolism = 0.15 // Sleep toxins should always be consumed pretty fast + overdose = REAGENTS_OVERDOSE/2 on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1918,13 +1713,103 @@ datum M.sleeping += 1 if(51 to INFINITY) M.sleeping += 1 - M.adjustToxLoss(data - 50) + M.adjustToxLoss((data - 50)*REM) data++ - // Sleep toxins should always be consumed pretty fast - holder.remove_reagent(src.id, 0.4) ..() return + toxin/acid + name = "Sulphuric acid" + id = "sacid" + description = "A strong mineral acid with the molecular formula H2SO4." + reagent_state = LIQUID + color = "#DB5008" // rgb: 219, 80, 8 + toxpwr = 1 + var/meltprob = 10 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.take_organ_damage(0, 1*REM) + ..() + return + + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//magic numbers everywhere + if(!istype(M, /mob/living)) + return + if(method == TOUCH) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + + if(H.head) + if(prob(meltprob) && !H.head.unacidable) + H << "Your headgear melts away but protects you from the acid!" + del(H.head) + H.update_inv_head(0) + H.update_hair(0) + else + H << "Your headgear protects you from the acid." + return + + if(H.wear_mask) + if(prob(meltprob) && !H.wear_mask.unacidable) + H << "Your mask melts away but protects you from the acid!" + del (H.wear_mask) + H.update_inv_wear_mask(0) + H.update_hair(0) + else + H << "Your mask protects you from the acid." + return + + if(H.glasses) //Doesn't protect you from the acid but can melt anyways! + if(prob(meltprob) && !H.glasses.unacidable) + H << "Your glasses melts away!" + del (H.glasses) + H.update_inv_glasses(0) + + else if(ismonkey(M)) + var/mob/living/carbon/monkey/MK = M + if(MK.wear_mask) + if(!MK.wear_mask.unacidable) + MK << "Your mask melts away but protects you from the acid!" + del (MK.wear_mask) + MK.update_inv_wear_mask(0) + else + MK << "Your mask protects you from the acid." + return + + if(!M.unacidable) + if(istype(M, /mob/living/carbon/human) && volume >= 10) + var/mob/living/carbon/human/H = M + var/datum/organ/external/affecting = H.get_organ("head") + if(affecting) + if(affecting.take_damage(4*toxpwr, 2*toxpwr)) + H.UpdateDamageIcon() + if(prob(meltprob)) //Applies disfigurement + H.emote("scream") + H.status_flags |= DISFIGURED + else + M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) // uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl + else + if(!M.unacidable) + M.take_organ_damage(min(6*toxpwr, volume * toxpwr)) + + reaction_obj(var/obj/O, var/volume) + if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(meltprob * 3)) + if(!O.unacidable) + var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) + I.desc = "Looks like this was \an [O] some time ago." + for(var/mob/M in viewers(5, O)) + M << "\red \the [O] melts." + del(O) + + toxin/acid/polyacid + name = "Polytrinic acid" + id = "pacid" + description = "Polytrinic acid is a an extremely corrosive chemical substance." + reagent_state = LIQUID + color = "#8E18A9" // rgb: 142, 24, 169 + toxpwr = 2 + meltprob = 30 /////////////////////////Food Reagents//////////////////////////// // Part of the food code. Nutriment is used instead of the old "heal_amt" code. Also is where all the food @@ -1964,6 +1849,7 @@ datum reagent_state = LIQUID nutriment_factor = 10 * REAGENTS_METABOLISM color = "#BBEDA4" // rgb: 187, 237, 164 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -1990,7 +1876,6 @@ datum nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 - capsaicin name = "Capsaicin Oil" id = "capsaicin" @@ -2024,7 +1909,7 @@ datum condensedcapsaicin name = "Condensed Capsaicin" id = "condensedcapsaicin" - description = "This shit goes in pepperspray." + description = "A chemical agent used for self-defense and in police work." reagent_state = LIQUID color = "#B31008" // rgb: 179, 16, 8 @@ -2081,6 +1966,11 @@ datum victim.Weaken(5) //victim.Paralyse(10) //victim.drop_item() + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(prob(5)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") + return frostoil name = "Frost Oil" @@ -2123,6 +2013,7 @@ datum description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID color = "#FFFFFF" // rgb: 255,255,255 + overdose = REAGENTS_OVERDOSE blackpepper name = "Black Pepper" @@ -2159,23 +2050,12 @@ datum ..() return - amatoxin - name = "Amatoxin" - id = "amatoxin" - description = "A powerful poison derived from certain species of mushroom." - color = "#792300" // rgb: 121, 35, 0 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1*REM) - ..() - return - psilocybin name = "Psilocybin" id = "psilocybin" description = "A strong psycotropic derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 + overdose = REAGENTS_OVERDOSE on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -2284,6 +2164,7 @@ datum description = "A universal enzyme used in the preperation of certain chemicals and foods." reagent_state = LIQUID color = "#365E30" // rgb: 54, 94, 48 + overdose = REAGENTS_OVERDOSE dry_ramen name = "Dry Ramen" @@ -2391,378 +2272,462 @@ datum if(!M) M = holder.my_atom M.nutrition += nutriment_factor holder.remove_reagent(src.id, FOOD_METABOLISM) + // Drinks should be used up faster than other reagents. + holder.remove_reagent(src.id, FOOD_METABOLISM) if (adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy) if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) if (adj_temp) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) - // Drinks should be used up faster than other reagents. + + ..() + return + + drink/orangejuice + name = "Orange juice" + id = "orangejuice" + description = "Both delicious AND rich in Vitamin C, what more do you need?" + color = "#E78108" // rgb: 231, 129, 8 + + on_mob_life(var/mob/living/M as mob) + ..() + if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1) + return + + drink/tomatojuice + name = "Tomato Juice" + id = "tomatojuice" + description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" + color = "#731008" // rgb: 115, 16, 8 + + on_mob_life(var/mob/living/M as mob) + ..() + if(M.getFireLoss() && prob(20)) M.heal_organ_damage(0,1) + return + + drink/limejuice + name = "Lime Juice" + id = "limejuice" + description = "The sweet-sour juice of limes." + color = "#365E30" // rgb: 54, 94, 48 + on_mob_life(var/mob/living/M as mob) + ..() + if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1*REM) + return + + drink/carrotjuice + name = "Carrot juice" + id = "carrotjuice" + description = "It is just like a carrot but without crunching." + color = "#973800" // rgb: 151, 56, 0 + + on_mob_life(var/mob/living/M as mob) + ..() + M.eye_blurry = max(M.eye_blurry-1 , 0) + M.eye_blind = max(M.eye_blind-1 , 0) + if(!data) data = 1 + switch(data) + if(1 to 20) + //nothing + if(21 to INFINITY) + if (prob(data-10)) + M.disabilities &= ~NEARSIGHTED + data++ + return + + drink/berryjuice + name = "Berry Juice" + id = "berryjuice" + description = "A delicious blend of several different kinds of berries." + color = "#863333" // rgb: 134, 51, 51 + + drink/poisonberryjuice + name = "Poison Berry Juice" + id = "poisonberryjuice" + description = "A tasty juice blended from various kinds of very deadly and toxic berries." + color = "#863353" // rgb: 134, 51, 83 + + on_mob_life(var/mob/living/M as mob) + ..() + M.adjustToxLoss(1) + return + + drink/watermelonjuice + name = "Watermelon Juice" + id = "watermelonjuice" + description = "Delicious juice made from watermelon." + color = "#863333" // rgb: 134, 51, 51 + + drink/lemonjuice + name = "Lemon Juice" + id = "lemonjuice" + description = "This juice is VERY sour." + color = "#863333" // rgb: 175, 175, 0 + + drink/banana + name = "Banana Juice" + id = "banana" + description = "The raw essence of a banana." + color = "#863333" // rgb: 175, 175, 0 + + drink/nothing + name = "Nothing" + id = "nothing" + description = "Absolutely nothing." + + drink/potato_juice + name = "Potato Juice" + id = "potato" + description = "Juice of the potato. Bleh." + nutriment_factor = 2 * FOOD_METABOLISM + color = "#302000" // rgb: 48, 32, 0 + + drink/milk + name = "Milk" + id = "milk" + description = "An opaque white liquid produced by the mammary glands of mammals." + color = "#DFDFDF" // rgb: 223, 223, 223 + + on_mob_life(var/mob/living/M as mob) + if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) + ..() + return + + drink/milk/soymilk + name = "Soy Milk" + id = "soymilk" + description = "An opaque white liquid made from soybeans." + color = "#DFDFC7" // rgb: 223, 223, 199 + + drink/milk/cream + name = "Cream" + id = "cream" + description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" + color = "#DFD7AF" // rgb: 223, 215, 175 + + drink/hot_coco + name = "Hot Chocolate" + id = "hot_coco" + description = "Made with love! And coco beans." + nutriment_factor = 2 * FOOD_METABOLISM + color = "#403010" // rgb: 64, 48, 16 + adj_temp = 5 + + drink/coffee + name = "Coffee" + id = "coffee" + description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." + color = "#482000" // rgb: 72, 32, 0 + adj_dizzy = -5 + adj_drowsy = -3 + adj_sleepy = -2 + adj_temp = 25 + + on_mob_life(var/mob/living/M as mob) + ..() + M.make_jittery(5) + if(adj_temp > 0 && holder.has_reagent("frostoil")) + holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) + + holder.remove_reagent(src.id, 0.1) + + drink/coffee/icecoffee + name = "Iced Coffee" + id = "icecoffee" + description = "Coffee and ice, refreshing and cool." + color = "#102838" // rgb: 16, 40, 56 + adj_temp = -5 + + drink/coffee/soy_latte + name = "Soy Latte" + id = "soy_latte" + description = "A nice and tasty beverage while you are reading your hippie books." + color = "#664300" // rgb: 102, 67, 0 + adj_sleepy = 0 + adj_temp = 5 + + on_mob_life(var/mob/living/M as mob) + ..() + M.sleeping = 0 + if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) + return + + drink/coffee/cafe_latte + name = "Cafe Latte" + id = "cafe_latte" + description = "A nice, strong and tasty beverage while you are reading." + color = "#664300" // rgb: 102, 67, 0 + adj_sleepy = 0 + adj_temp = 5 + + on_mob_life(var/mob/living/M as mob) + ..() + M.sleeping = 0 + if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) + return + + drink/tea + name = "Tea" + id = "tea" + description = "Tasty black tea, it has antioxidants, it's good for you!" + color = "#101000" // rgb: 16, 16, 0 + adj_dizzy = -2 + adj_drowsy = -1 + adj_sleepy = -3 + adj_temp = 20 + + on_mob_life(var/mob/living/M as mob) + ..() + if(M.getToxLoss() && prob(20)) + M.adjustToxLoss(-1) + return + + drink/tea/icetea + name = "Iced Tea" + id = "icetea" + description = "No relation to a certain rap artist/ actor." + color = "#104038" // rgb: 16, 64, 56 + adj_temp = -5 + + drink/cold + name = "Cold drink" + adj_temp = -5 + + drink/cold/tonic + name = "Tonic Water" + id = "tonic" + description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." + color = "#664300" // rgb: 102, 67, 0 + adj_dizzy = -5 + adj_drowsy = -3 + adj_sleepy = -2 + + drink/cold/sodawater + name = "Soda Water" + id = "sodawater" + description = "A can of club soda. Why not make a scotch and soda?" + color = "#619494" // rgb: 97, 148, 148 + adj_dizzy = -5 + adj_drowsy = -3 + + drink/cold/ice + name = "Ice" + id = "ice" + description = "Frozen water, your dentist wouldn't like you chewing this." + reagent_state = SOLID + color = "#619494" // rgb: 97, 148, 148 + + drink/cold/space_cola + name = "Cola" + id = "cola" + description = "A refreshing beverage." + reagent_state = LIQUID + color = "#100800" // rgb: 16, 8, 0 + adj_drowsy = -3 + + drink/cold/nuka_cola + name = "Nuka Cola" + id = "nuka_cola" + description = "Cola, cola never changes." + color = "#100800" // rgb: 16, 8, 0 + adj_sleepy = -2 + + on_mob_life(var/mob/living/M as mob) + M.make_jittery(20) + M.druggy = max(M.druggy, 30) + M.dizziness +=5 + M.drowsyness = 0 + ..() + return + + drink/cold/spacemountainwind + name = "Space Mountain Wind" + id = "spacemountainwind" + description = "Blows right through you like a space wind." + color = "#102000" // rgb: 16, 32, 0 + adj_drowsy = -7 + adj_sleepy = -1 + + drink/cold/dr_gibb + name = "Dr. Gibb" + id = "dr_gibb" + description = "A delicious blend of 42 different flavours" + color = "#102000" // rgb: 16, 32, 0 + adj_drowsy = -6 + + drink/cold/space_up + name = "Space-Up" + id = "space_up" + description = "Tastes like a hull breach in your mouth." + color = "#202800" // rgb: 32, 40, 0 + adj_temp = -8 + + drink/cold/lemon_lime + name = "Lemon Lime" + description = "A tangy substance made of 0.5% natural citrus!" + id = "lemon_lime" + color = "#878F00" // rgb: 135, 40, 0 + adj_temp = -8 + + drink/cold/lemonade + name = "Lemonade" + description = "Oh the nostalgia..." + id = "lemonade" + color = "#FFFF00" // rgb: 255, 255, 0 + + drink/cold/kiraspecial + name = "Kira Special" + description = "Long live the guy who everyone had mistaken for a girl. Baka!" + id = "kiraspecial" + color = "#CCCC99" // rgb: 204, 204, 153 + + drink/cold/brownstar + name = "Brown Star" + description = "Its not what it sounds like..." + id = "brownstar" + color = "#9F3400" // rgb: 159, 052, 000 + adj_temp = - 2 + + drink/cold/milkshake + name = "Milkshake" + description = "Glorious brainfreezing mixture." + id = "milkshake" + color = "#AEE5E4" // rgb" 174, 229, 228 + adj_temp = -9 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!data) data = 1 + switch(data) + if(1 to 15) + M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT + if(holder.has_reagent("capsaicin")) + holder.remove_reagent("capsaicin", 5) + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(5,20) + if(15 to 25) + M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(10,20) + if(25 to INFINITY) + M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT + if(prob(1)) M.emote("shiver") + if(istype(M, /mob/living/carbon/slime)) + M.bodytemperature -= rand(15,20) + data++ holder.remove_reagent(src.id, FOOD_METABOLISM) ..() return - orangejuice - name = "Orange juice" - id = "orangejuice" - description = "Both delicious AND rich in Vitamin C, what more do you need?" - color = "#E78108" // rgb: 231, 129, 8 + drink/cold/rewriter + name = "Rewriter" + description = "The secert of the sanctuary of the Libarian..." + id = "rewriter" + color = "#485000" // rgb:72, 080, 0 - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1*REM) - return + on_mob_life(var/mob/living/M as mob) + ..() + M.make_jittery(5) + return - tomatojuice - name = "Tomato Juice" - id = "tomatojuice" - description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" - color = "#731008" // rgb: 115, 16, 8 - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getFireLoss() && prob(20)) M.heal_organ_damage(0,1) - return + doctor_delight + name = "The Doctor's Delight" + id = "doctorsdelight" + description = "A gulp a day keeps the MediBot away. That's probably for the best." + reagent_state = LIQUID + color = "#FF8CFF" // rgb: 255, 140, 255 + nutriment_factor = 1 * FOOD_METABOLISM - limejuice - name = "Lime Juice" - id = "limejuice" - description = "The sweet-sour juice of limes." - color = "#365E30" // rgb: 54, 94, 48 - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1) - return + on_mob_life(var/mob/living/M as mob) + M:nutrition += nutriment_factor + holder.remove_reagent(src.id, FOOD_METABOLISM) + if(!M) M = holder.my_atom + if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2) + if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0) + if(M:getFireLoss() && prob(50)) M:heal_organ_damage(0,2) + if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2) + if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15) + if(M.confused !=0) M.confused = max(0,M.confused - 5) + ..() + return - carrotjuice - name = "Carrot juice" - id = "carrotjuice" - description = "It is just like a carrot but without crunching." - color = "#973800" // rgb: 151, 56, 0 +//////////////////////////////////////////////The ten friggen million reagents that get you drunk////////////////////////////////////////////// - on_mob_life(var/mob/living/M as mob) - ..() - M.eye_blurry = max(M.eye_blurry-1 , 0) - M.eye_blind = max(M.eye_blind-1 , 0) - if(!data) data = 1 - switch(data) - if(1 to 20) - //nothing - if(21 to INFINITY) - if (prob(data-10)) - M.disabilities &= ~NEARSIGHTED - data++ - return + atomicbomb + name = "Atomic Bomb" + id = "atomicbomb" + description = "Nuclear proliferation never tasted so good." + reagent_state = LIQUID + color = "#666300" // rgb: 102, 99, 0 - berryjuice - name = "Berry Juice" - id = "berryjuice" - description = "A delicious blend of several different kinds of berries." - color = "#863333" // rgb: 134, 51, 51 + on_mob_life(var/mob/living/M as mob) + M.druggy = max(M.druggy, 50) + M.confused = max(M.confused+2,0) + M.make_dizzy(10) + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 3 + if(!data) data = 1 + data++ + switch(data) + if(51 to 200) + M.sleeping += 1 + if(201 to INFINITY) + M.sleeping += 1 + M.adjustToxLoss(2) + ..() + return - poisonberryjuice - name = "Poison Berry Juice" - id = "poisonberryjuice" - description = "A tasty juice blended from various kinds of very deadly and toxic berries." - color = "#863353" // rgb: 134, 51, 83 + gargle_blaster + name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" + description = "Whoah, this stuff looks volatile!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 - on_mob_life(var/mob/living/M as mob) - ..() - M.adjustToxLoss(1) - return + on_mob_life(var/mob/living/M as mob) + if(!data) data = 1 + data++ + M.dizziness +=6 + if(data >= 15 && data <45) + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 3 + else if(data >= 45 && prob(50) && data <55) + M.confused = max(M.confused+3,0) + else if(data >=55) + M.druggy = max(M.druggy, 55) + else if(data >=200) + M.adjustToxLoss(2) + ..() + return - watermelonjuice - name = "Watermelon Juice" - id = "watermelonjuice" - description = "Delicious juice made from watermelon." - color = "#863333" // rgb: 134, 51, 51 + neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + description = "A strong neurotoxin that puts the subject into a death-like state." + reagent_state = LIQUID + color = "#2E2E61" // rgb: 46, 46, 97 - lemonjuice - name = "Lemon Juice" - id = "lemonjuice" - description = "This juice is VERY sour." - color = "#863333" // rgb: 175, 175, 0 - - banana - name = "Banana Juice" - id = "banana" - description = "The raw essence of a banana." - color = "#863333" // rgb: 175, 175, 0 - - nothing - name = "Nothing" - id = "nothing" - description = "Absolutely nothing." - - potato_juice - name = "Potato Juice" - id = "potato" - description = "Juice of the potato. Bleh." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#302000" // rgb: 48, 32, 0 - - milk - name = "Milk" - id = "milk" - description = "An opaque white liquid produced by the mammary glands of mammals." - color = "#DFDFDF" // rgb: 223, 223, 223 - - on_mob_life(var/mob/living/M as mob) - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) - ..() - return - - soymilk - name = "Soy Milk" - id = "soymilk" - description = "An opaque white liquid made from soybeans." - color = "#DFDFC7" // rgb: 223, 223, 199 - - cream - name = "Cream" - id = "cream" - description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" - color = "#DFD7AF" // rgb: 223, 215, 175 - - hot_coco - name = "Hot Chocolate" - id = "hot_coco" - description = "Made with love! And coco beans." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#403010" // rgb: 64, 48, 16 - adj_temp = 5 - - coffee - name = "Coffee" - id = "coffee" - description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." - color = "#482000" // rgb: 72, 32, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - adj_temp = 25 - - on_mob_life(var/mob/living/M as mob) - ..() - M.make_jittery(5) - if(adj_temp > 0 && holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 10*REAGENTS_METABOLISM) - - holder.remove_reagent(src.id, 0.1) - icecoffee - name = "Iced Coffee" - id = "icecoffee" - description = "Coffee and ice, refreshing and cool." - color = "#102838" // rgb: 16, 40, 56 - adj_temp = -5 - - soy_latte - name = "Soy Latte" - id = "soy_latte" - description = "A nice and tasty beverage while you are reading your hippie books." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - description = "A nice, strong and tasty beverage while you are reading." - color = "#664300" // rgb: 102, 67, 0 - adj_sleepy = 0 - adj_temp = 5 - - on_mob_life(var/mob/living/M as mob) - ..() - M.sleeping = 0 - if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) - return - - tea - name = "Tea" - id = "tea" - description = "Tasty black tea, it has antioxidants, it's good for you!" - color = "#101000" // rgb: 16, 16, 0 - adj_dizzy = -2 - adj_drowsy = -1 - adj_sleepy = -3 - adj_temp = 20 - - on_mob_life(var/mob/living/M as mob) - ..() - if(M.getToxLoss() && prob(20)) - M.adjustToxLoss(-1) - return - - icetea - name = "Iced Tea" - id = "icetea" - description = "No relation to a certain rap artist/ actor." - color = "#104038" // rgb: 16, 64, 56 - adj_temp = -5 - - kahlua - name = "Kahlua" - id = "kahlua" - description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" - color = "#664300" // rgb: 102, 67, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - ..() - M.make_jittery(5) - return - - cold - name = "Cold drink" - adj_temp = -5 - - tonic - name = "Tonic Water" - id = "tonic" - description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." - color = "#664300" // rgb: 102, 67, 0 - adj_dizzy = -5 - adj_drowsy = -3 - adj_sleepy = -2 - - sodawater - name = "Soda Water" - id = "sodawater" - description = "A can of club soda. Why not make a scotch and soda?" - color = "#619494" // rgb: 97, 148, 148 - adj_dizzy = -5 - adj_drowsy = -3 - - ice - name = "Ice" - id = "ice" - description = "Frozen water, your dentist wouldn't like you chewing this." - reagent_state = SOLID - color = "#619494" // rgb: 97, 148, 148 - - space_cola - name = "Cola" - id = "cola" - description = "A refreshing beverage." - reagent_state = LIQUID - color = "#100800" // rgb: 16, 8, 0 - adj_drowsy = -3 - - nuka_cola - name = "Nuka Cola" - id = "nuka_cola" - description = "Cola, cola never changes." - color = "#100800" // rgb: 16, 8, 0 - adj_sleepy = -2 - - on_mob_life(var/mob/living/M as mob) - M.make_jittery(20) - M.druggy = max(M.druggy, 30) - M.dizziness +=5 - M.drowsyness = 0 - ..() - return - - spacemountainwind - name = "Space Mountain Wind" - id = "spacemountainwind" - description = "Blows right through you like a space wind." - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -7 - adj_sleepy = -1 - - dr_gibb - name = "Dr. Gibb" - id = "dr_gibb" - description = "A delicious blend of 42 different flavours" - color = "#102000" // rgb: 16, 32, 0 - adj_drowsy = -6 - - space_up - name = "Space-Up" - id = "space_up" - description = "Tastes like a hull breach in your mouth." - color = "#202800" // rgb: 32, 40, 0 - adj_temp = -8 - - lemon_lime - name = "Lemon Lime" - description = "A tangy substance made of 0.5% natural citrus!" - id = "lemon_lime" - color = "#878F00" // rgb: 135, 40, 0 - adj_temp = -8 - - lemonade - name = "Lemonade" - description = "Oh the nostalgia..." - id = "lemonade" - color = "#FFFF00" // rgb: 255, 255, 0 - - kiraspecial - name = "Kira Special" - description = "Long live the guy who everyone had mistaken for a girl. Baka!" - id = "kiraspecial" - color = "#CCCC99" // rgb: 204, 204, 153 - - brownstar - name = "Brown Star" - description = "Its not what it sounds like..." - id = "brownstar" - color = "#9F3400" // rgb: 159, 052, 000 - adj_temp = - 2 - - milkshake - name = "Milkshake" - description = "Glorious brainfreezing mixture." - id = "milkshake" - color = "#AEE5E4" // rgb" 174, 229, 228 - adj_temp = -9 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - if(!data) data = 1 - switch(data) - if(1 to 15) - M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(5,20) - if(15 to 25) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(10,20) - if(25 to INFINITY) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/carbon/slime)) - M.bodytemperature -= rand(15,20) - data++ - holder.remove_reagent(src.id, FOOD_METABOLISM) - ..() - return - - rewriter - name = "Rewriter" - description = "The secert of the sanctuary of the Libarian..." - id = "rewriter" - color = "#485000" // rgb:72, 080, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.make_jittery(5) - return + on_mob_life(var/mob/living/carbon/M as mob) + if(!M) M = holder.my_atom + M.weakened = max(M.weakened, 3) + if(!data) data = 1 + data++ + M.dizziness +=6 + if(data >= 15 && data <45) + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 3 + else if(data >= 45 && prob(50) && data <55) + M.confused = max(M.confused+3,0) + else if(data >=55) + M.druggy = max(M.druggy, 55) + else if(data >=200) + M.adjustToxLoss(2) + ..() + return hippies_delight name = "Hippie's Delight" @@ -2775,6 +2740,7 @@ datum if(!M) M = holder.my_atom M.druggy = max(M.druggy, 50) if(!data) data = 1 + data++ switch(data) if(1 to 5) if (!M.stuttering) M.stuttering = 1 @@ -2786,18 +2752,31 @@ datum M.make_dizzy(20) M.druggy = max(M.druggy, 45) if(prob(20)) M.emote(pick("twitch","giggle")) - if (10 to INFINITY) + if (10 to 200) if (!M.stuttering) M.stuttering = 1 M.make_jittery(40) M.make_dizzy(40) M.druggy = max(M.druggy, 60) if(prob(30)) M.emote(pick("twitch","giggle")) + if(200 to INFINITY) + if (!M.stuttering) M.stuttering = 1 + M.make_jittery(60) + M.make_dizzy(60) + M.druggy = max(M.druggy, 75) + if(prob(40)) M.emote(pick("twitch","giggle")) + if(prob(30)) M.adjustToxLoss(2) holder.remove_reagent(src.id, 0.2) - data++ ..() return -//ALCOHOL WOO +/*boozepwr chart +1-2 = non-toxic alcohol +3 = medium-toxic +4 = the hard stuff +5 = potent mixes +<6 = deadly toxic +*/ + ethanol name = "Ethanol" //Parent class for all alcoholic reagents. id = "ethanol" @@ -2805,19 +2784,26 @@ datum reagent_state = LIQUID nutriment_factor = 0 //So alcohol can fill you up! If they want to. color = "#404030" // rgb: 64, 64, 48 + var/boozepwr = 5 //higher numbers mean the booze will have an effect faster. var/dizzy_adj = 3 + var/adj_drowsy = 0 + var/adj_sleepy = 0 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 + var/slur_start = 90 //amount absorbed after which mob starts slurring + var/confused_start = 150 //amount absorbed after which mob starts confusing directions + var/blur_start = 300 //amount absorbed after which mob starts getting blurred vision + var/pass_out = 400 //amount absorbed after which mob starts passing out on_mob_life(var/mob/living/M as mob) M:nutrition += nutriment_factor holder.remove_reagent(src.id, FOOD_METABOLISM) + + if (adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy) + if (adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy) + if(!src.data) data = 1 - src.data++ + src.data += boozepwr var/d = data @@ -2825,7 +2811,7 @@ datum for(var/datum/reagent/ethanol/A in holder.reagent_list) if(isnum(A.data)) d += A.data - M.dizziness +=dizzy_adj. + M.dizziness += dizzy_adj. if(d >= slur_start && d < pass_out) if (!M:slurring) M:slurring = 1 M:slurring += slurr_adj @@ -2844,8 +2830,6 @@ datum if (istype(L)) L.take_damage(0.1, 1) H.adjustToxLoss(0.1) - - holder.remove_reagent(src.id, 0.4) ..() return @@ -2863,641 +2847,633 @@ datum usr << "It wasn't enough..." return - beer //It's really much more stronger than other drinks. - name = "Beer" - id = "beer" - description = "An alcoholic beverage made from malted grains, hops, yeast, and water." - nutriment_factor = 2 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - on_mob_life(var/mob/living/M as mob) - ..() - M:jitteriness = max(M:jitteriness-3,0) - return + ethanol/beer + name = "Beer" + id = "beer" + description = "An alcoholic beverage made from malted grains, hops, yeast, and water." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + nutriment_factor = 1 * FOOD_METABOLISM - whiskey - name = "Whiskey" - id = "whiskey" - description = "A superb and well-aged single-malt whiskey. Damn." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 + on_mob_life(var/mob/living/M as mob) + M:jitteriness = max(M:jitteriness-3,0) + ..() + return - specialwhiskey - name = "Special Blend Whiskey" - id = "specialwhiskey" - description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." - color = "#664300" // rgb: 102, 67, 0 - slur_start = 30 //amount absorbed after which mob starts slurring + ethanol/kahlua + name = "Kahlua" + id = "kahlua" + description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1.5 + dizzy_adj = -5 + adj_drowsy = -3 + adj_sleepy = -2 - gin - name = "Gin" - id = "gin" - description = "It's gin. In space. I say, good sir." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 3 + on_mob_life(var/mob/living/M as mob) + M.make_jittery(5) + ..() + return - absinthe - name = "Absinthe" - id = "absinthe" - description = "Watch out that the Green Fairy doesn't come for you!" - color = "#33EE00" // rgb: lots, ??, ?? - dizzy_adj = 5 - slur_start = 25 - confused_start = 100 + ethanol/whiskey + name = "Whiskey" + id = "whiskey" + description = "A superb and well-aged single-malt whiskey. Damn." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + dizzy_adj = 4 - //copy paste from LSD... shoot me - on_mob_life(var/mob/M) - if(!M) M = holder.my_atom - if(!data) data = 1 - data++ - M:hallucination += 5 - if(volume > REAGENTS_OVERDOSE) - M:adjustToxLoss(1) - ..() - return + ethanol/specialwhiskey + name = "Special Blend Whiskey" + id = "specialwhiskey" + description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + dizzy_adj = 4 + slur_start = 30 //amount absorbed after which mob starts slurring - rum - name = "Rum" - id = "rum" - description = "Yohoho and all that." - color = "#664300" // rgb: 102, 67, 0 + ethanol/thirteenloko + name = "Thirteen Loko" + id = "thirteenloko" + description = "A potent mixture of caffeine and alcohol." + color = "#102000" // rgb: 16, 32, 0 + boozepwr = 2 + nutriment_factor = 1 * FOOD_METABOLISM - deadrum - name = "Deadrum" - id = "rum" - description = "Popular with the sailors. Not very popular with everyone else." - color = "#664300" // rgb: 102, 67, 0 + on_mob_life(var/mob/living/M as mob) + M:drowsyness = max(0,M:drowsyness-7) + if (M.bodytemperature > 310) + M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) + M.make_jittery(5) + ..() + return - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - if(volume > REAGENTS_OVERDOSE) - M:adjustToxLoss(1) - return + ethanol/vodka + name = "Vodka" + id = "vodka" + description = "Number one drink AND fueling choice for Russians worldwide." + color = "#0064C8" // rgb: 0, 100, 200 + boozepwr = 2 - vodka - name = "Vodka" - id = "vodka" - description = "Number one drink AND fueling choice for Russians worldwide." - color = "#664300" // rgb: 102, 67, 0 + on_mob_life(var/mob/living/M as mob) + M.radiation = max(M.radiation-1,0) + ..() + return - sake - name = "Sake" - id = "sake" - description = "Anime's favorite drink." - color = "#664300" // rgb: 102, 67, 0 + ethanol/bilk + name = "Bilk" + id = "bilk" + description = "This appears to be beer mixed with milk. Disgusting." + color = "#895C4C" // rgb: 137, 92, 76 + boozepwr = 1 + nutriment_factor = 2 * FOOD_METABOLISM - tequilla - name = "Tequila" - id = "tequilla" - description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" - color = "#A8B0B7" // rgb: 168, 176, 183 + ethanol/threemileisland + name = "Three Mile Island Iced Tea" + id = "threemileisland" + description = "Made for a woman, strong enough for a man." + color = "#666340" // rgb: 102, 99, 64 + boozepwr = 5 - vermouth - name = "Vermouth" - id = "vermouth" - description = "You suddenly feel a craving for a martini..." - color = "#664300" // rgb: 102, 67, 0 + on_mob_life(var/mob/living/M as mob) + M.druggy = max(M.druggy, 50) + ..() + return - wine - name = "Wine" - id = "wine" - description = "An premium alchoholic beverage made from distilled grape juice." - color = "#7E4043" // rgb: 126, 64, 67 - dizzy_adj = 2 - slur_start = 65 //amount absorbed after which mob starts slurring - confused_start = 145 //amount absorbed after which mob starts confusing directions + ethanol/gin + name = "Gin" + id = "gin" + description = "It's gin. In space. I say, good sir." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + dizzy_adj = 3 - cognac - name = "Cognac" - id = "cognac" - description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - confused_start = 115 //amount absorbed after which mob starts confusing directions + ethanol/rum + name = "Rum" + id = "rum" + description = "Yohoho and all that." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1.5 - hooch - name = "Hooch" - id = "hooch" - description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 6 - slurr_adj = 5 - slur_start = 35 //amount absorbed after which mob starts slurring - confused_start = 90 //amount absorbed after which mob starts confusing directions + ethanol/tequilla + name = "Tequila" + id = "tequilla" + description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" + color = "#FFFF91" // rgb: 255, 255, 145 + boozepwr = 2 - ale - name = "Ale" - id = "ale" - description = "A dark alchoholic beverage made by malted barley and yeast." - color = "#664300" // rgb: 102, 67, 0 + ethanol/vermouth + name = "Vermouth" + id = "vermouth" + description = "You suddenly feel a craving for a martini..." + color = "#91FF91" // rgb: 145, 255, 145 + boozepwr = 1.5 - thirteenloko - name = "Thirteen Loko" - id = "thirteenloko" - description = "A potent mixture of caffeine and alcohol." - reagent_state = LIQUID - color = "#102000" // rgb: 16, 32, 0 + ethanol/wine + name = "Wine" + id = "wine" + description = "An premium alchoholic beverage made from distilled grape juice." + color = "#7E4043" // rgb: 126, 64, 67 + boozepwr = 1.5 + dizzy_adj = 2 + slur_start = 65 //amount absorbed after which mob starts slurring + confused_start = 145 //amount absorbed after which mob starts confusing directions - on_mob_life(var/mob/living/M as mob) - ..() - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - M:drowsyness = max(0,M:drowsyness-7) - //if(!M:sleeping_willingly) - // M:sleeping = max(0,M.sleeping-2) - if (M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature-5) - M.make_jittery(1) - return + ethanol/cognac + name = "Cognac" + id = "cognac" + description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." + color = "#AB3C05" // rgb: 171, 60, 5 + boozepwr = 1.5 + dizzy_adj = 4 + confused_start = 115 //amount absorbed after which mob starts confusing directions + + ethanol/hooch + name = "Hooch" + id = "hooch" + description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + dizzy_adj = 6 + slurr_adj = 5 + slur_start = 35 //amount absorbed after which mob starts slurring + confused_start = 90 //amount absorbed after which mob starts confusing directions + + ethanol/ale + name = "Ale" + id = "ale" + description = "A dark alchoholic beverage made by malted barley and yeast." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + + ethanol/absinthe + name = "Absinthe" + id = "absinthe" + description = "Watch out that the Green Fairy doesn't come for you!" + color = "#33EE00" // rgb: lots, ??, ?? + boozepwr = 2 + dizzy_adj = 5 + slur_start = 25 + confused_start = 100 + + //copy paste from LSD... shoot me + on_mob_life(var/mob/M) + if(!M) M = holder.my_atom + if(!data) data = 1 + data++ + M:hallucination += 5 + ..() + return + + ethanol/deadrum + name = "Deadrum" + id = "rum" + description = "Popular with the sailors. Not very popular with everyone else." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + + on_mob_life(var/mob/living/M as mob) + ..() + M.dizziness +=5 + return + + ethanol/sake + name = "Sake" + id = "sake" + description = "Anime's favorite drink." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 /////////////////////////////////////////////////////////////////cocktail entities////////////////////////////////////////////// - bilk - name = "Bilk" - id = "bilk" - description = "This appears to be beer mixed with milk. Disgusting." - reagent_state = LIQUID - color = "#895C4C" // rgb: 137, 92, 76 - - atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - description = "Nuclear proliferation never tasted so good." - reagent_state = LIQUID - color = "#666300" // rgb: 102, 99, 0 - - threemileisland - name = "THree Mile Island Iced Tea" - id = "threemileisland" - description = "Made for a woman, strong enough for a man." - reagent_state = LIQUID - color = "#666340" // rgb: 102, 99, 64 - - goldschlager - name = "Goldschlager" - id = "goldschlager" - description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - patron - name = "Patron" - id = "patron" - description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." - reagent_state = LIQUID - color = "#585840" // rgb: 88, 88, 64 - - gintonic - name = "Gin and Tonic" - id = "gintonic" - description = "An all time classic, mild cocktail." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - cuba_libre - name = "Cuba Libre" - id = "cubalibre" - description = "Rum, mixed with cola. Viva la revolution." - reagent_state = LIQUID - color = "#3E1B00" // rgb: 62, 27, 0 - - whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - description = "Whiskey, mixed with cola. Surprisingly refreshing." - reagent_state = LIQUID - color = "#3E1B00" // rgb: 62, 27, 0 - - martini - name = "Classic Martini" - id = "martini" - description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - white_russian - name = "White Russian" - id = "whiterussian" - description = "That's just, like, your opinion, man..." - reagent_state = LIQUID - color = "#A68340" // rgb: 166, 131, 64 - - screwdrivercocktail - name = "Screwdriver" - id = "screwdrivercocktail" - description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - booger - name = "Booger" - id = "booger" - description = "Ewww..." - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - bloody_mary - name = "Bloody Mary" - id = "bloodymary" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - description = "Whoah, this stuff looks volatile!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - brave_bull - name = "Brave Bull" - id = "bravebull" - description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - tequilla_sunrise - name = "Tequila Sunrise" - id = "tequillasunrise" - description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - toxins_special - name = "Toxins Special" - id = "toxinsspecial" - description = "This thing is FLAMING!. CALL THE DAMN SHUTTLE!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - beepsky_smash - name = "Beepsky Smash" - id = "beepskysmash" - description = "Deny drinking this and prepare for THE LAW." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - doctor_delight - name = "The Doctor's Delight" - id = "doctorsdelight" - description = "A gulp a day keeps the MediBot away. That's probably for the best." - reagent_state = LIQUID - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - M:nutrition += nutriment_factor - holder.remove_reagent(src.id, FOOD_METABOLISM) - if(!M) M = holder.my_atom - if(M:getOxyLoss() && prob(50)) M:adjustOxyLoss(-2) - if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0) - if(M:getFireLoss() && prob(50)) M:heal_organ_damage(0,2) - if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2) - if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15) - if(M.confused !=0) M.confused = max(0,M.confused - 5) - ..() - return - changelingsting - name = "Changeling Sting" - id = "changelingsting" - description = "You take a tiny sip and feel a burning sensation..." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - irish_cream - name = "Irish Cream" - id = "irishcream" - description = "Whiskey-imbued cream, what else would you expect from the Irish." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - moonshine - name = "Moonshine" - id = "moonshine" - description = "You've really hit rock bottom now... your liver packed its bags and left last night." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - b52 - name = "B-52" - id = "b52" - description = "Coffee, Irish Cream, and congac. You will get bombed." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - irishcoffee - name = "Irish Coffee" - id = "irishcoffee" - description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - margarita - name = "Margarita" - id = "margarita" - description = "On the rocks with salt on the rim. Arriba~!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - black_russian - name = "Black Russian" - id = "blackrussian" - description = "For the lactose-intolerant. Still as classy as a White Russian." - reagent_state = LIQUID - color = "#360000" // rgb: 54, 0, 0 - - manhattan - name = "Manhattan" - id = "manhattan" - description = "The Detective's undercover drink of choice. He never could stomach gin..." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - description = "A scienitst's drink of choice, for pondering ways to blow up the station." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - description = "Ultimate refreshment." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - antifreeze - name = "Anti-freeze" - id = "antifreeze" - description = "Ultimate refreshment." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - barefoot - name = "Barefoot" - id = "barefoot" - description = "Barefoot and pregnant" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - snowwhite - name = "Snow White" - id = "snowwhite" - description = "A cold refreshment" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - demonsblood - name = "Demons Blood" - id = "demonsblood" - description = "AHHHH!!!!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 10 - slurr_adj = 10 - - vodkatonic - name = "Vodka and Tonic" - id = "vodkatonic" - description = "For when a gin and tonic isn't russian enough." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - slurr_adj = 3 - - ginfizz - name = "Gin Fizz" - id = "ginfizz" - description = "Refreshingly lemony, deliciously dry." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - dizzy_adj = 4 - slurr_adj = 3 - - bahama_mama - name = "Bahama mama" - id = "bahama_mama" - description = "Tropic cocktail." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - singulo - name = "Singulo" - id = "singulo" - description = "A blue-space beverage!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - dizzy_adj = 15 - slurr_adj = 15 - - sbiten - name = "Sbiten" - id = "sbiten" - description = "A spicy Vodka! Might be a little hot for the little guys!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - if (M.bodytemperature < 360) - M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055 - return - - devilskiss - name = "Devils Kiss" - id = "devilskiss" - description = "Creepy time!" - reagent_state = LIQUID - color = "#A68310" // rgb: 166, 131, 16 - - red_mead - name = "Red Mead" - id = "red_mead" - description = "The true Viking drink! Even though it has a strange red color." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - mead - name = "Mead" - id = "mead" - description = "A Vikings drink, though a cheap one." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - iced_beer - name = "Iced Beer" - id = "iced_beer" - description = "A beer which is so cold the air around it freezes." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - if (M.bodytemperature < 270) - M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055 - return - - grog - name = "Grog" - id = "grog" - description = "Watered down rum, NanoTrasen approves!" - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - aloe - name = "Aloe" - id = "aloe" - description = "So very, very, very good." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - andalusia - name = "Andalusia" - id = "andalusia" - description = "A nice, strange named drink." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - description = "A drink made from your allies." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - acid_spit - name = "Acid Spit" - id = "acidspit" - description = "A drink by NanoTrasen. Made from live aliens." - reagent_state = LIQUID - color = "#365000" // rgb: 54, 80, 0 - - amasec - name = "Amasec" - id = "amasec" - description = "Official drink of the Imperium." - reagent_state = LIQUID - color = "#664300" // rgb: 102, 67, 0 - - on_mob_life(var/mob/living/M as mob) - ..() - M.stunned = 4 - return - - neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - description = "A strong neurotoxin that puts the subject into a death-like state." - reagent_state = LIQUID - color = "#2E2E61" // rgb: 46, 46, 97 - - on_mob_life(var/mob/living/M as mob) - ..() - if(!M) M = holder.my_atom - M:adjustOxyLoss(0.5) - M:adjustOxyLoss(0.5) - M:weakened = max(M:weakened, 15) - M:silent = max(M:silent, 15) - return - - bananahonk - name = "Banana Mama" - id = "bananahonk" - description = "A drink from Clown Heaven." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - - silencer - name = "Silencer" - id = "silencer" - description = "A drink from Mime Heaven." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#664300" // rgb: 102, 67, 0 - - changelingsting - name = "Changeling Sting" - id = "changelingsting" - description = "A stingy drink." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - return - - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - description = "The surprise is, it's green!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - description = "Mmm, tastes like chocolate cake..." - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - ..() - M.dizziness +=5 - return - - syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - description = "A Syndicate bomb" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - description = "The surprise is, it's green!" - reagent_state = LIQUID - color = "#2E6671" // rgb: 46, 102, 113 - - driestmartini - name = "Driest Martini" - id = "driestmartini" - description = "Only for the experienced. You think you see sand floating in the glass." - nutriment_factor = 1 * FOOD_METABOLISM - color = "#2E6671" // rgb: 46, 102, 113 - - on_mob_life(var/mob/living/M as mob) - if(!data) data = 1 - data++ - M.dizziness +=10 - if(data >= 55 && data <115) - if (!M.stuttering) M.stuttering = 1 - M.stuttering += 10 - else if(data >= 115 && prob(33)) - M.confused = max(M.confused+15,15) - ..() - return + + ethanol/goldschlager + name = "Goldschlager" + id = "goldschlager" + description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/patron + name = "Patron" + id = "patron" + description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." + color = "#585840" // rgb: 88, 88, 64 + boozepwr = 1.5 + + ethanol/gintonic + name = "Gin and Tonic" + id = "gintonic" + description = "An all time classic, mild cocktail." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + + ethanol/cuba_libre + name = "Cuba Libre" + id = "cubalibre" + description = "Rum, mixed with cola. Viva la revolution." + color = "#3E1B00" // rgb: 62, 27, 0 + boozepwr = 1.5 + + ethanol/whiskey_cola + name = "Whiskey Cola" + id = "whiskeycola" + description = "Whiskey, mixed with cola. Surprisingly refreshing." + color = "#3E1B00" // rgb: 62, 27, 0 + boozepwr = 2 + + ethanol/martini + name = "Classic Martini" + id = "martini" + description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + + ethanol/vodkamartini + name = "Vodka Martini" + id = "vodkamartini" + description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + ethanol/white_russian + name = "White Russian" + id = "whiterussian" + description = "That's just, like, your opinion, man..." + color = "#A68340" // rgb: 166, 131, 64 + boozepwr = 3 + + ethanol/screwdrivercocktail + name = "Screwdriver" + id = "screwdrivercocktail" + description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." + color = "#A68310" // rgb: 166, 131, 16 + boozepwr = 3 + + ethanol/booger + name = "Booger" + id = "booger" + description = "Ewww..." + color = "#8CFF8C" // rgb: 140, 255, 140 + boozepwr = 1.5 + + ethanol/bloody_mary + name = "Bloody Mary" + id = "bloodymary" + description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/brave_bull + name = "Brave Bull" + id = "bravebull" + description = "It's just as effective as Dutch-Courage!." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/tequilla_sunrise + name = "Tequila Sunrise" + id = "tequillasunrise" + description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" + color = "#FFE48C" // rgb: 255, 228, 140 + boozepwr = 2 + + ethanol/toxins_special + name = "Toxins Special" + id = "toxinsspecial" + description = "This thing is ON FIRE!. CALL THE DAMN SHUTTLE!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 5 + + on_mob_life(var/mob/living/M as mob) + if (M.bodytemperature < 330) + M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 + ..() + return + + ethanol/beepsky_smash + name = "Beepsky Smash" + id = "beepskysmash" + description = "Deny drinking this and prepare for THE LAW." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + on_mob_life(var/mob/living/M as mob) + M.Stun(2) + ..() + return + + ethanol/irish_cream + name = "Irish Cream" + id = "irishcream" + description = "Whiskey-imbued cream, what else would you expect from the Irish." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + + ethanol/manly_dorf + name = "The Manly Dorf" + id = "manlydorf" + description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + + ethanol/longislandicedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + ethanol/moonshine + name = "Moonshine" + id = "moonshine" + description = "You've really hit rock bottom now... your liver packed its bags and left last night." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + ethanol/b52 + name = "B-52" + id = "b52" + description = "Coffee, Irish Cream, and cognac. You will get bombed." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + ethanol/irishcoffee + name = "Irish Coffee" + id = "irishcoffee" + description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/margarita + name = "Margarita" + id = "margarita" + description = "On the rocks with salt on the rim. Arriba~!" + color = "#8CFF8C" // rgb: 140, 255, 140 + boozepwr = 3 + + ethanol/black_russian + name = "Black Russian" + id = "blackrussian" + description = "For the lactose-intolerant. Still as classy as a White Russian." + color = "#360000" // rgb: 54, 0, 0 + boozepwr = 3 + + ethanol/manhattan + name = "Manhattan" + id = "manhattan" + description = "The Detective's undercover drink of choice. He never could stomach gin..." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/manhattan_proj + name = "Manhattan Project" + id = "manhattan_proj" + description = "A scientist's drink of choice, for pondering ways to blow up the station." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 5 + + on_mob_life(var/mob/living/M as mob) + M.druggy = max(M.druggy, 30) + ..() + return + + ethanol/whiskeysoda + name = "Whiskey Soda" + id = "whiskeysoda" + description = "For the more refined griffon." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/antifreeze + name = "Anti-freeze" + id = "antifreeze" + description = "Ultimate refreshment." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + on_mob_life(var/mob/living/M as mob) + if (M.bodytemperature < 330) + M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 + ..() + return + + ethanol/barefoot + name = "Barefoot" + id = "barefoot" + description = "Barefoot and pregnant" + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1.5 + + ethanol/snowwhite + name = "Snow White" + id = "snowwhite" + description = "A cold refreshment" + color = "#FFFFFF" // rgb: 255, 255, 255 + boozepwr = 1.5 + + ethanol/demonsblood + name = "Demons Blood" + id = "demonsblood" + description = "AHHHH!!!!" + color = "#820000" // rgb: 130, 0, 0 + boozepwr = 3 + + ethanol/vodkatonic + name = "Vodka and Tonic" + id = "vodkatonic" + description = "For when a gin and tonic isn't russian enough." + color = "#0064C8" // rgb: 0, 100, 200 + boozepwr = 3 + dizzy_adj = 4 + slurr_adj = 3 + + ethanol/ginfizz + name = "Gin Fizz" + id = "ginfizz" + description = "Refreshingly lemony, deliciously dry." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1.5 + dizzy_adj = 4 + slurr_adj = 3 + + ethanol/bahama_mama + name = "Bahama mama" + id = "bahama_mama" + description = "Tropical cocktail." + color = "#FF7F3B" // rgb: 255, 127, 59 + boozepwr = 2 + + ethanol/singulo + name = "Singulo" + id = "singulo" + description = "A blue-space beverage!" + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 5 + dizzy_adj = 15 + slurr_adj = 15 + + ethanol/sbiten + name = "Sbiten" + id = "sbiten" + description = "A spicy Vodka! Might be a little hot for the little guys!" + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + on_mob_life(var/mob/living/M as mob) + if (M.bodytemperature < 360) + M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 + ..() + return + + ethanol/devilskiss + name = "Devils Kiss" + id = "devilskiss" + description = "Creepy time!" + color = "#A68310" // rgb: 166, 131, 16 + boozepwr = 3 + + ethanol/red_mead + name = "Red Mead" + id = "red_mead" + description = "The true Viking drink! Even though it has a strange red color." + color = "#C73C00" // rgb: 199, 60, 0 + boozepwr = 1.5 + + ethanol/mead + name = "Mead" + id = "mead" + description = "A Vikings drink, though a cheap one." + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1.5 + nutriment_factor = 1 * FOOD_METABOLISM + + ethanol/iced_beer + name = "Iced Beer" + id = "iced_beer" + description = "A beer which is so cold the air around it freezes." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 1 + + on_mob_life(var/mob/living/M as mob) + if(M.bodytemperature > 270) + M.bodytemperature = max(270, M.bodytemperature - (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055 + ..() + return + + ethanol/grog + name = "Grog" + id = "grog" + description = "Watered down rum, NanoTrasen approves!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 0.5 + + ethanol/aloe + name = "Aloe" + id = "aloe" + description = "So very, very, very good." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 35 + + ethanol/andalusia + name = "Andalusia" + id = "andalusia" + description = "A nice, strange named drink." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 3 + + ethanol/alliescocktail + name = "Allies Cocktail" + id = "alliescocktail" + description = "A drink made from your allies, not as sweet as when made from your enemies." + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + + ethanol/acid_spit + name = "Acid Spit" + id = "acidspit" + description = "A drink for the daring, can be deadly if incorrectly prepared!" + reagent_state = LIQUID + color = "#365000" // rgb: 54, 80, 0 + boozepwr = 1.5 + + ethanol/amasec + name = "Amasec" + id = "amasec" + description = "Official drink of the NanoTrasen Gun-Club!" + reagent_state = LIQUID + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 2 + + ethanol/changelingsting + name = "Changeling Sting" + id = "changelingsting" + description = "You take a tiny sip and feel a burning sensation..." + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 5 + + ethanol/irishcarbomb + name = "Irish Car Bomb" + id = "irishcarbomb" + description = "Mmm, tastes like chocolate cake..." + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 3 + dizzy_adj = 5 + + ethanol/syndicatebomb + name = "Syndicate Bomb" + id = "syndicatebomb" + description = "Tastes like terrorism!" + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 5 + + ethanol/erikasurprise + name = "Erika Surprise" + id = "erikasurprise" + description = "The surprise is, it's green!" + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 3 + + ethanol/driestmartini + name = "Driest Martini" + id = "driestmartini" + description = "Only for the experienced. You think you see sand floating in the glass." + nutriment_factor = 1 * FOOD_METABOLISM + color = "#2E6671" // rgb: 46, 102, 113 + boozepwr = 4 + + ethanol/bananahonk + name = "Banana Mama" + id = "bananahonk" + description = "A drink from Clown Heaven." + nutriment_factor = 1 * REAGENTS_METABOLISM + color = "#FFFF91" // rgb: 255, 255, 140 + boozepwr = 4 + + ethanol/silencer + name = "Silencer" + id = "silencer" + description = "A drink from Mime Heaven." + nutriment_factor = 1 * FOOD_METABOLISM + color = "#664300" // rgb: 102, 67, 0 + boozepwr = 4 + + on_mob_life(var/mob/living/M as mob) + if(!data) data = 1 + data++ + M.dizziness +=10 + if(data >= 55 && data <115) + if (!M.stuttering) M.stuttering = 1 + M.stuttering += 10 + else if(data >= 115 && prob(33)) + M.confused = max(M.confused+15,15) + ..() + return + +// Undefine the alias for REAGENTS_EFFECT_MULTIPLER +#undef REM \ No newline at end of file diff --git a/code/setup.dm b/code/setup.dm index ed5255a4ce..da3ff22273 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -71,10 +71,10 @@ #define DOOR_CRUSH_DAMAGE 10 // Factor of how fast mob nutrition decreases -#define HUNGER_FACTOR 0.05 +#define HUNGER_FACTOR 0.05 // How many units of reagent are consumed per tick, by default. -#define REAGENTS_METABOLISM 0.2 +#define REAGENTS_METABOLISM 0.2 // By defining the effect multiplier this way, it'll exactly adjust // all effects according to how they originally were with the 0.4 metabolism From 720d74a0b78b54806b7f5ab56b4d29b8b3716997 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Sun, 1 Sep 2013 21:31:22 +0100 Subject: [PATCH 09/18] Internal bleeding tweaked. Cryo and Bicaridine will prevent IB from bleeding and getting worse. Bicaridine over 30 units will slowly heal IB. IB cannot be completely healed by bicaridine until 10 minutes after getting IB. Bleeding rate for IB reduced. --- code/modules/organs/organ_external.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c4fe3de28b..8955f1fc35 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -321,14 +321,21 @@ // Internal wounds get worse over time. Low temperatures (cryo) stop them. if(W.internal && !W.is_treated() && owner.bodytemperature >= 170) - if(!owner.reagents.has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time + if(!owner.reagents.has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time, and also stop bleeding W.open_wound(0.1 * wound_update_accuracy) - owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy) + owner.vessel.remove_reagent("blood",0.04 * W.damage * wound_update_accuracy) //This line causes the bleeding from internal organs. + if(owner.reagents.has_reagent("bicaridine") && (owner.reagents.get_reagent_amount("bicaridine") >= 30)) + var/healinternal = 0.2 + if(W.damage <= healinternal) + W.damage = 0 + else + W.damage -= healinternal if(prob(1 * wound_update_accuracy)) owner.custom_pain("You feel a stabbing pain in your [display_name]!",1) // slow healing var/heal_amt = 0 + if (W.damage < 15) //this thing's edges are not in day's travel of each other, what healing? heal_amt += 0.2 From 0008d649b03c957c613047869c19cc906d07990b Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 12:26:06 +0100 Subject: [PATCH 10/18] Silent fix for megaphone. --- code/game/objects/items/devices/megaphone.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 5638c175c6..22476ad005 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -19,6 +19,8 @@ if(!ishuman(user)) user << "\red You don't know how to use this!" return + if(user.silent) + return if(spamcheck) user << "\red \The [src] needs to recharge!" return From 37acbe9bf7edfb20a83d2f14bbddfa49b5c0207b Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 16:10:43 +0100 Subject: [PATCH 11/18] Fuel tanks uses explode() proc. --- code/modules/reagents/reagent_dispenser.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index e6c4af7ce1..bc5f7a5b97 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -166,9 +166,7 @@ /obj/structure/reagent_dispensers/fueltank/temperature_expose(datum/gas_mixture/air, temperature, volume) if(temperature > T0C+500) - explosion(src.loc,-1,0,2) - if(src) - del(src) + explode() return ..() /obj/structure/reagent_dispensers/peppertank From afcfed02bdd47b8611bc11e4d3651816ad74cbbe Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:38:42 +0100 Subject: [PATCH 12/18] Moved gas_filter_strength out of clothing and into gas masks. --- code/modules/clothing/clothing.dm | 1 - code/modules/clothing/masks/gasmask.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 10 +++++++--- code/modules/mob/living/carbon/monkey/life.dm | 11 +++++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 0a9ecad292..92f18afcc1 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,7 +1,6 @@ /obj/item/clothing name = "clothing" var/list/species_restricted = null //Only these species can wear this kit. - var/gas_filter_strength = 0 //For gas mask filters //BS12: Species-restricted clothing check. /obj/item/clothing/mob_can_equip(M as mob, slot) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 44bf751967..b89b8831af 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -9,7 +9,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 siemens_coefficient = 0.9 - gas_filter_strength = 1 + var/gas_filter_strength = 1 //For gas mask filters //Plague Dr suit can be found in clothing/suits/bio.dm /obj/item/clothing/mask/gas/plaguedoctor diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d514a4f95b..0164ca1227 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -334,10 +334,14 @@ if(head.flags & BLOCK_GAS_SMOKE_EFFECT) block = 1 - if(!block && !wear_mask) - breath = loc.remove_air(breath_moles, 0) + if(block && wear_mask) + if(istype(wear_mask, /obj/item/clothing/mask/gas)) + var/obj/item/clothing/mask/gas/G = wear_mask + breath = loc.remove_air(breath_moles, G.gas_filter_strength) //Filters out harmful gases + else + breath = loc.remove_air(breath_moles, 0) else - breath = loc.remove_air(breath_moles, wear_mask.gas_filter_strength) //Filters out harmful gases + breath = loc.remove_air(breath_moles, 0) if(!is_lung_ruptured()) if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 84228208c9..be549e2c62 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -232,13 +232,16 @@ if(istype(wear_mask, /obj/item/clothing/mask/gas)) block = 1 - if(!block) - breath = loc.remove_air(breath_moles, 0) + if(block && wear_mask) + if(istype(wear_mask, /obj/item/clothing/mask/gas)) + var/obj/item/clothing/mask/gas/G = wear_mask + breath = loc.remove_air(breath_moles, G.gas_filter_strength) //Filters out harmful gases + else + breath = loc.remove_air(breath_moles, 0) else - breath = loc.remove_air(breath_moles, wear_mask.gas_filter_strength) //Filters out harmful gases + breath = loc.remove_air(breath_moles, 0) if(!block) - for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) if(smoke.reagents.total_volume) smoke.reagents.reaction(src, INGEST) From 3662725155b243a0f09e0c525f0fc9793d78375d Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:44:47 +0100 Subject: [PATCH 13/18] Fixes for monkeycubes. --- code/datums/supplypacks.dm | 6 +- .../objects/items/weapons/storage/boxes.dm | 36 ++--- .../reagent_containers/food/snacks.dm | 144 ++++-------------- 3 files changed, 45 insertions(+), 141 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index b3b03e6ac2..4f8a04a192 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -68,7 +68,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/farwa name = "Farwa crate" - contains = list (/obj/item/weapon/storage/box/farwacubes) + contains = list (/obj/item/weapon/storage/box/monkeycubes/farwacubes) cost = 30 containertype = /obj/structure/closet/crate/freezer containername = "Farwa crate" @@ -76,7 +76,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/skrell name = "Neaera crate" - contains = list (/obj/item/weapon/storage/box/neaeracubes) + contains = list (/obj/item/weapon/storage/box/monkeycubes/neaeracubes) cost = 30 containertype = /obj/structure/closet/crate/freezer containername = "Neaera crate" @@ -84,7 +84,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/stok name = "Stok crate" - contains = list (/obj/item/weapon/storage/box/stokcubes) + contains = list (/obj/item/weapon/storage/box/monkeycubes/stokcubes) cost = 30 containertype = /obj/structure/closet/crate/freezer containername = "Stok crate" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index c29a12f3b7..6a4375ce7e 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -290,43 +290,33 @@ can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube") New() ..() - for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) -/obj/item/weapon/storage/box/farwacubes + if(src.type == /obj/item/weapon/storage/box/monkeycubes) + for(var/i = 1; i <= 5; i++) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) + +/obj/item/weapon/storage/box/monkeycubes/farwacubes name = "farwa cube box" - desc = "Drymate brand farwa cubes. Just add water!" - icon = 'icons/obj/food.dmi' - icon_state = "monkeycubebox" - storage_slots = 7 - can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/farwacube") + desc = "Drymate brand farwa cubes, shipped from Ahdomai. Just add water!" New() ..() for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/farwacube/wrapped(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src) -/obj/item/weapon/storage/box/stokcubes +/obj/item/weapon/storage/box/monkeycubes/stokcubes name = "stok cube box" - desc = "Drymate brand stok cubes. Just add water!" - icon = 'icons/obj/food.dmi' - icon_state = "monkeycubebox" - storage_slots = 7 - can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/stokcube") + desc = "Drymate brand stok cubes, shipped from Moghes. Just add water!" New() ..() for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/stokcube/wrapped(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src) -/obj/item/weapon/storage/box/neaeracubes +/obj/item/weapon/storage/box/monkeycubes/neaeracubes name = "neaera cube box" - desc = "Drymate brand neaera cubes. Just add water!" - icon = 'icons/obj/food.dmi' - icon_state = "monkeycubebox" - storage_slots = 7 - can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/stokcube") + desc = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!" New() ..() for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/neaeracube/wrapped(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src) /obj/item/weapon/storage/box/ids name = "spare IDs" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 664a436344..a0c4558011 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1332,6 +1332,7 @@ icon_state = "monkeycube" bitesize = 12 var/wrapped = 0 + var/monkey_type = null New() ..() @@ -1339,7 +1340,7 @@ afterattack(obj/O as obj, mob/user as mob) if(istype(O,/obj/structure/sink) && !wrapped) - user << "You place [name] under a stream of water..." + user << "You place \the [name] under a stream of water..." loc = get_turf(O) return Expand() ..() @@ -1350,8 +1351,17 @@ proc/Expand() for(var/mob/M in viewers(src,7)) - M << "\red The monkey cube expands!" - new /mob/living/carbon/monkey(get_turf(src)) + M << "\red \The [src] expands!" + if(monkey_type) + switch(monkey_type) + if("tajara") + new /mob/living/carbon/monkey/tajara(get_turf(src)) + if("unathi") + new /mob/living/carbon/monkey/unathi(get_turf(src)) + if("skrell") + new /mob/living/carbon/monkey/skrell(get_turf(src)) + else + new /mob/living/carbon/monkey(get_turf(src)) del(src) proc/Unwrap(mob/user as mob) @@ -1366,125 +1376,29 @@ icon_state = "monkeycubewrap" wrapped = 1 -/obj/item/weapon/reagent_containers/food/snacks/farwacube + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube name = "farwa cube" - desc = "Just add water!" - icon_state = "monkeycube" - bitesize = 12 - var/wrapped = 0 + monkey_type ="tajara" +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube + name = "farwa cube" + monkey_type ="tajara" - New() - ..() - reagents.add_reagent("nutriment",10) - afterattack(obj/O as obj, mob/user as mob) - if(istype(O,/obj/structure/sink) && !wrapped) - user << "You place [name] under a stream of water..." - loc = get_turf(O) - return Expand() - ..() - - attack_self(mob/user as mob) - if(wrapped) - Unwrap(user) - - proc/Expand() - for(var/mob/M in viewers(src,7)) - M << "\red The farwa cube expands!" - new /mob/living/carbon/monkey/tajara(get_turf(src)) - del(src) - - proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - return - -/obj/item/weapon/reagent_containers/food/snacks/stokcube +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube name = "stok cube" - desc = "Just add water!" - icon_state = "monkeycube" - bitesize = 12 - var/wrapped = 0 + monkey_type ="unathi" +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube + name = "stok cube" + monkey_type ="unathi" - New() - ..() - reagents.add_reagent("nutriment",10) - afterattack(obj/O as obj, mob/user as mob) - if(istype(O,/obj/structure/sink) && !wrapped) - user << "You place [name] under a stream of water..." - loc = get_turf(O) - return Expand() - ..() - - attack_self(mob/user as mob) - if(wrapped) - Unwrap(user) - - proc/Expand() - for(var/mob/M in viewers(src,7)) - M << "\red The stok cube expands!" - new /mob/living/carbon/monkey/unathi(get_turf(src)) - del(src) - - proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - return -/obj/item/weapon/reagent_containers/food/snacks/neaeracube +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube name = "neaera cube" - desc = "Just add water!" - icon_state = "monkeycube" - bitesize = 12 - var/wrapped = 0 - - New() - ..() - reagents.add_reagent("nutriment",10) - - afterattack(obj/O as obj, mob/user as mob) - if(istype(O,/obj/structure/sink) && !wrapped) - user << "You place [name] under a stream of water..." - loc = get_turf(O) - return Expand() - ..() - - attack_self(mob/user as mob) - if(wrapped) - Unwrap(user) - - proc/Expand() - for(var/mob/M in viewers(src,7)) - M << "\red The neaera cube expands!" - new /mob/living/carbon/monkey/skrell(get_turf(src)) - del(src) - - proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - return - -/obj/item/weapon/reagent_containers/food/snacks/neaeracube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - wrapped = 1 -/obj/item/weapon/reagent_containers/food/snacks/stokcube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - wrapped = 1 - - -/obj/item/weapon/reagent_containers/food/snacks/farwacube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - wrapped = 1 - + monkey_type ="skrell" +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube + name = "neaera cube" + monkey_type ="skrell" /obj/item/weapon/reagent_containers/food/snacks/spellburger From 1e499d8994683510e80089f17baad14fb06284ce Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:45:24 +0100 Subject: [PATCH 14/18] Sleeper adjustments. Cannot inject over 20 units. --- code/game/machinery/Sleeper.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index a4158218a1..c1be061f53 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -133,7 +133,7 @@ var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r" var/mob/living/occupant = null var/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "dermaline" = "Dermaline", "bicaridine" = "Bicaridine", "dexalin" = "Dexalin") - var/amounts = list(10, 20) + var/amounts = list(5, 10) New() @@ -269,11 +269,11 @@ proc/inject_chemical(mob/living/user as mob, chemical, amount) if(src.occupant && src.occupant.reagents) - if(src.occupant.reagents.get_reagent_amount(chemical) + amount <= 40) + if(src.occupant.reagents.get_reagent_amount(chemical) + amount <= 20) src.occupant.reagents.add_reagent(chemical, amount) user << "Occupant now has [src.occupant.reagents.get_reagent_amount(chemical)] units of [available_chemicals[chemical]] in his/her bloodstream." return - user << "There's no occupant in the sleeper or the subject rejects the chemicals!" + user << "There's no occupant in the sleeper or the subject has too many chemicals!" return From 9633dd907310dff5397df3f81aa2c1f12f22a1d4 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:45:38 +0100 Subject: [PATCH 15/18] Alarm runtime fixes. --- code/game/machinery/alarm.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index ea2456cf97..300d62745c 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -181,7 +181,8 @@ if(target_temperature < T0C + MIN_TEMPERATURE) target_temperature = T0C + MIN_TEMPERATURE - var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles) + var/datum/gas_mixture/gas + gas = location.remove_air(0.25*environment.total_moles) var/heat_capacity = gas.heat_capacity() var/energy_used = max( abs( heat_capacity*(gas.temperature - target_temperature) ), MAX_ENERGY_CHANGE) From 88a45d3cbfd2479edd3f9624d01ee89baa91b9b3 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:51:49 +0100 Subject: [PATCH 16/18] Job whitelist fix. --- code/modules/admin/banjob.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 1eb61cd4a9..b6d1ea53b6 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -18,12 +18,14 @@ var/jobban_keylist[0] //to store the keys & ranks if(M && rank) /* if(_jobban_isbanned(M, rank)) return "Reason Unspecified" //for old jobban + */ + if (guest_jobbans(rank)) if(config.guest_jobban && IsGuestKey(M.key)) return "Guest Job-ban" if(config.usewhitelist && !check_whitelist(M)) return "Whitelisted Job" - */ + for (var/s in jobban_keylist) if( findtext(s,"[M.ckey] - [rank]") == 1 ) var/startpos = findtext(s, "## ")+3 From 8f3d303e450dd586df345684dd193281ff8e43d5 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 17:53:28 +0100 Subject: [PATCH 17/18] Bicaridine slows but does not stop internal bleeding. --- code/modules/organs/organ_external.dm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 8955f1fc35..d7d6fe3398 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -323,16 +323,19 @@ if(W.internal && !W.is_treated() && owner.bodytemperature >= 170) if(!owner.reagents.has_reagent("bicaridine")) //bicard stops internal wounds from growing bigger with time, and also stop bleeding W.open_wound(0.1 * wound_update_accuracy) - owner.vessel.remove_reagent("blood",0.04 * W.damage * wound_update_accuracy) //This line causes the bleeding from internal organs. - if(owner.reagents.has_reagent("bicaridine") && (owner.reagents.get_reagent_amount("bicaridine") >= 30)) - var/healinternal = 0.2 - if(W.damage <= healinternal) - W.damage = 0 - else - W.damage -= healinternal + owner.vessel.remove_reagent("blood",0.05 * W.damage * wound_update_accuracy) + owner.vessel.remove_reagent("blood",0.02 * W.damage * wound_update_accuracy)//Bicaridine slows Internal Bleeding if(prob(1 * wound_update_accuracy)) owner.custom_pain("You feel a stabbing pain in your [display_name]!",1) + //overdose of bicaridine begins healing IB + if(owner.reagents.has_reagent("bicaridine") && (owner.reagents.get_reagent_amount("bicaridine") >= 30)) + var/healinternal = 0.2 + if(W.damage <= healinternal) + W.damage = 0 + else + W.damage -= healinternal + // slow healing var/heal_amt = 0 From 9e17473f6271bf147844c7131e842ceec5296984 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Mon, 2 Sep 2013 18:24:11 +0100 Subject: [PATCH 18/18] Uncomments books. Generifies mentions of tg or baystation. --- code/controllers/configuration.dm | 4 +- code/game/objects/items/weapons/manuals.dm | 107 +++++++++++---------- code/hub.dm | 2 +- code/modules/client/client procs.dm | 2 +- code/world.dm | 6 +- 5 files changed, 62 insertions(+), 59 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 0db84249c6..79a31b23e8 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -65,8 +65,8 @@ var/server var/banappeals - var/wikiurl = "http://baystation12.net/wiki/index.php?title=Main_Page" - var/forumurl = "http://baystation12.net/forums/" + var/wikiurl + var/forumurl //Alert level description var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 0f65736b50..ee6f96161a 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -12,7 +12,8 @@ icon_state ="bookEngineering" author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned title = "Station Repairs and Construction" - /*dat = {" + + dat = {" @@ -23,16 +24,16 @@ - "}*/ + "} + /obj/item/weapon/book/manual/engineering_particle_accelerator name = "Particle Accelerator User's Guide" icon_state ="bookParticleAccelerator" author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned title = "Particle Accelerator User's Guide" -//big pile of shit below. - /*dat = {" + dat = {" -

Growing Humans

+

Growing Diona

- Why would you want to grow humans? Well I'm expecting most readers to be in the slave trade, but a few might actually - want to revive fallen comrades. Growing pod people is easy, but prone to disaster. + Growing Diona is easy!

    -
  1. Find a dead person who is in need of cloning.
  2. -
  3. Take a blood sample with a syringe.
  4. -
  5. Inject a seed pack with the blood sample.
  6. Plant the seeds.
  7. -
  8. Tend to the plants water and nutrition levels until it is time to harvest the cloned human.
  9. +
  10. Tend to the plants water and nutrition levels until it is time to harvest the Diona.

It really is that easy! Good luck! - "}*/ + "} + /obj/item/weapon/book/manual/medical_cloning name = "Cloning techniques of the 26th century" icon_state ="bookCloning" author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned title = "Cloning techniques of the 26th century" -//big pile of shit below. - /*dat = {" + dat = {"