From f03759a246f97a1cf3b3b37334873834753e614e Mon Sep 17 00:00:00 2001 From: Chinsky Date: Thu, 12 Mar 2015 15:07:20 +0300 Subject: [PATCH 01/15] Fixes organ bioprinter and the organs. Now less debuggy and less buggy too. --- code/game/machinery/bioprinter.dm | 28 ++++++++++++++++++++-------- code/modules/organs/organ_objects.dm | 9 +++++++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index a0ac4258cc..7710a6d6ec 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -1,7 +1,7 @@ //These machines are mostly just here for debugging/spawning. Skeletons of the feature to come. /obj/machinery/bioprinter - name = "bioprinter" + name = "organ bioprinter" desc = "It's a machine that grows replacement organs." icon = 'icons/obj/surgery.dmi' @@ -41,33 +41,45 @@ if(prints_prosthetics) O.robotic = 2 else if(loaded_dna) - visible_message("The printer would be using the DNA sample if it was coded.") - //TODO: Copy DNA hash or donor reference over to new organ. + visible_message("The printer injects stored DNA in used biomass..") + var/datum/organ/internal/I = new O.organ_type + I.transplant_data = list() + var/mob/living/carbon/C = loaded_dna["donor"] + I.transplant_data["species"] = C.species.name + I.transplant_data["blood_type"] = loaded_dna["blood_type"] + I.transplant_data["blood_DNA"] = loaded_dna["blood_DNA"] + O.organ_data = I + I.organ_holder = O - visible_message("The bioprinter spits out a new organ.") + + visible_message("The bioprinter spits out a new organ.") else - user << "There is not enough matter in the printer." + user << "There is not enough matter in the printer." /obj/machinery/bioprinter/attackby(obj/item/weapon/W, mob/user) // DNA sample from syringe. if(!prints_prosthetics && istype(W,/obj/item/weapon/reagent_containers/syringe)) - user << "You inject the blood sample into the bioprinter, but it isn't coded yet." + var/obj/item/weapon/reagent_containers/syringe/S = W + var/datum/reagent/blood/injected = locate() in S.reagents.reagent_list //Grab some blood + if(injected && injected.data) + loaded_dna = injected.data + user << "You inject the blood sample into the bioprinter." return // Meat for biomass. else if(!prints_prosthetics && istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) - user << "\blue \The [src] processes \the [W]." stored_matter += 50 user.drop_item() + user << "\The [src] processes \the [W]. Levels of stored biomass now: [stored_matter]" del(W) return // Steel for matter. else if(prints_prosthetics && istype(W, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = W - user << "\blue \The [src] processes \the [W]." stored_matter += M.amount * 10 user.drop_item() + user << "\The [src] processes \the [W]. Levels of stored matter now: [stored_matter]" del(W) return else diff --git a/code/modules/organs/organ_objects.dm b/code/modules/organs/organ_objects.dm index 610e702ad1..a97f1f28f5 100644 --- a/code/modules/organs/organ_objects.dm +++ b/code/modules/organs/organ_objects.dm @@ -76,7 +76,7 @@ /obj/item/organ/proc/update() if(!organ_data) - organ_data = new /datum/organ/internal() + organ_data = new organ_type() if(robotic) organ_data.robotic = robotic @@ -93,6 +93,7 @@ organ_tag = "heart" fresh = 6 // Juicy. dead_icon = "heart-off" + organ_type = /datum/organ/internal/heart /obj/item/organ/lungs name = "lungs" @@ -101,6 +102,7 @@ prosthetic_name = "gas exchange system" prosthetic_icon = "lungs-prosthetic" organ_tag = "lungs" + organ_type = /datum/organ/internal/lungs /obj/item/organ/kidneys name = "kidneys" @@ -109,6 +111,7 @@ prosthetic_name = "prosthetic kidneys" prosthetic_icon = "kidneys-prosthetic" organ_tag = "kidneys" + organ_type = /datum/organ/internal/kidney /obj/item/organ/eyes name = "eyeballs" @@ -117,7 +120,7 @@ prosthetic_name = "visual prosthesis" prosthetic_icon = "eyes-prosthetic" organ_tag = "eyes" - + organ_type = /datum/organ/internal/eyes var/eye_colour /obj/item/organ/liver @@ -126,11 +129,13 @@ prosthetic_name = "toxin filter" prosthetic_icon = "liver-prosthetic" organ_tag = "liver" + organ_type = /datum/organ/internal/liver /obj/item/organ/appendix name = "appendix" icon_state = "appendix" organ_tag = "appendix" + organ_type = /datum/organ/internal/appendix //These are here so they can be printed out via the fabricator. /obj/item/organ/heart/prosthetic From 14811d35e984b343a3d262f24a304575c0203626 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 13 Mar 2015 23:27:35 +0100 Subject: [PATCH 02/15] Fixes #8439. Appears to be the last of the major re-occuring runtimes. Good work team. --- code/modules/examine/examine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 3f15fa22d4..f09fce6cf3 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -51,7 +51,7 @@ /client/Stat() . = ..() - if(statpanel("Examine")) + if(usr && statpanel("Examine")) stat(null,"[description_holders["icon"]] [description_holders["name"]]") //The name, written in big letters. stat(null,"[description_holders["desc"]]") //the default examine text. if(description_holders["info"]) From 8ce5bf55351d5101b5de1b9bc9fd9dc2f87af516 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Mar 2015 21:22:19 -0400 Subject: [PATCH 03/15] Fixes missing item right hand icon states --- icons/mob/items_righthand.dmi | Bin 159077 -> 159179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 496b9b2c03c51628635a095f2bcc7e2b008b7d86..7408e47eb4776579a4360a449ff8cef2cfdf1b57 100644 GIT binary patch delta 1851 zcmYLJX;f3!7QO+6B18U4tPDjac?<%gF%KaRC0;P)fs6v$ zgxR5lNg!4vOcHpM0vaAD&@cxOLCQ?R5R%;68(r&l|2b!$ea_l@f9KoZhY^)Gqbm0g zqjI0?Q&o*3-eFgNFke3$1yA`Ud10xq-X$6g2*`MNGh8^&54a91?>BU}E9!2TrE^u2 zxT+`)S5-mjl3H?^&Dz?UXVM8Gk?3B^=nql&2y(9nLHCjo>sq!#J&L#98fyoof3mAD zvT$(p0T3$OjjIeQ%eWnBI{je0WzS;V1dkgRgD1}x%O54XyS?8PKb+{~q3ZYRd*kI1 zk5J*DsV$~LvoWNTc3!q)nqQ*{LbUc`Fm|zJebBxRjo&_Tv5E#xvk#$p1R>ZfeREY% zY_(XBH46@41VJl2)lI4AjWmg2u7K^Vy3;s~I z_oU@|EYd#FokLOmCf^w(k-juEG^~T>7&C#;LS17XoZE}X-ty;bcoQ&en+H0Bp7-;` zi!U5BLW4O0x?6Tk@3>&7C!A}+1ACZYPk zacNilm8tL@(fkkaYIPN1Sf>0st$utIch#2(3UKhO2<(*iulqu{a(y|<%&`VfTNUvI zkLIHJDE8I_9}~Blz#?Z&XNhM^ZFZpbEe$o{BGnA5D;&-e3c*bcZ;efa*Y{Hx0{!rl7mp<3e+3%#Ih&6#10 z0-ij1g1fyL>Fm{&r%rXDb?Io$3M_ft<4m}9=Zl9@#a59)4w0LGCvlAMtYf{6zBY~~ zTpnTvo_zR^6JtHOW=`K1LMAsmcbx-G&mN;$uVSr(IV;^2b{}O>0aa;R%v={c5q*65 zPZ_mR-N6=v%Jo*MPk)O6h+W^;U#+|TuPwzJ)iKJ`#K5VTy?tIyCKUT#V_u3i%g-_` zS9HMQ71X#e#5|ih9C1vJY!?(!008m2QZT?<%ujWtKJ!cEE1^%jx~l0|M25}x zm?)Y@4&l_*)f0wF=#)+_wEG;c?u^L`TIKqqEgzk76ak}}F6~q(vA_LD;KI$$0accK z9xBfY4$2qW%O-y}^0*FDx@hx!euIDE!c<(wxM$OwjMz3FWh5$QoXbg;n$0 z%ZSe`%HCyNw49)t_q@<*n+WZvH)aK;A|F2Z? zAF-v9Frdk;2WAJh6X6!xjY&qkm4%aRn!8L#iR9+)n-&zcGu>*E^p;D;v~QYO zHX=YzPLS6EH&VGaThgyE(1i#nJxowxhl4l61b^BcV_Lgn30`-#sm98HzGqXu#)}C^ zSoo5(@=494Q~eqMV5E`DbMpbyb<9l-zl6IoMk^?Rh!{!p`!Pb3QrQW~Uhp)LxC<&2 z>lNAi{lvIrm09jD?Vra+JCjJ&1p+EUHFk)^^Mk_*HTZ(MMO*Wop2?!(EJw$o2Zkna zTOHZspyZl)jVygy`1<#<6acmraYzjm?!5uJ%z_Et#ubS+aqo zBN881j9`H=J^Nd=ufhCt6Fb61PIL3u$Q+u>jyyEa(&Ko1MvlS92r+qL3~~`6L@DDE zQQ?ci>0(zxF|ut;iQ0)BE%}7g3ahK{e=zGzgBZ>F3|#8IUQo4L?%IBE=onl!4f>6RUF$(tN&h(d<{)ETYgW2xa!oia6D^1grWfdG{t<~T`sTwfk{#Adu0L@2-|ZvBA-hNtMA+|O zxn482BNe{YEORZVD8$P(08xRX1;96l4jnROFmTrtzWr*Cpd7w?$%zgicGl6ASbg&H G-M;|m`PRAs delta 1748 zcmZ9NeNaY9q84Qh0;PnC3iuJqD#V0RVhxZ0x1>hoNCf5E2jq1jyIkq&u@S`~G$AIcMJUn`fTq zy}e_br$;ycxX-HWsYj-R`>|8Ot;tgSG&{ECz2}CmPbmvZ4Ki%>s!af%k5oRul)cL9 zawzC>u;O+(SleFO%J5uVT>PpaBn&Fl720T$^$bWaw3MpE5wNeg)_+1T6l|S4o@B4V z6f7!b7Xi-k+p|qVPxmOPn$;#&_URqBnd{DkB)|$w`u&_Fl%{Gb=8?*!IUJF=fSFH_ zrpqn}_#y?XlMc$>D={v-`WzBfod*jVKqbrQ0kz#W8Vpwx-R5}YULoj(JGjj!t}A92 zXgK68ce51djivV>Gc>jVRmwYxqtjyY=dr)-&P-j?EI7qXu}dXN|CABXS*Gh9-EW8r*xOKOptgI~T)TyGn;=TJ|5Q9Xb z2m5nYFPhtQZ>;A^etyGv{+&v6g}#Le_u?5wo0RP$`4J5 zjt(nr(ASCe6qPaX4`w3s5%B(CU?e>VJsW(Pv*N`wh1}o9&33|-IzY?{*+XLmcvGF7 zNHR|JkqN)fNNQk}#tqPExpn?Hu=-Y~Hw(1vb3SlN1sy4ZjvbkCYY?rnrhH(y0iF8B zm!LxSz2)=pZ%w0Ul4x3a>c9?d9M`rot~Dw?6Fn^l*PF{ie)2K{RUiN5^GMiF=E}B|NF-Yz87n$N~^o}cGsjb z@wIaAw$yYq_43dX5v8lF?fwE1tGjms*48|_r_eD!f6PAwqvpR_3FN`O6&0ijI1U_2 z99iC&V<#qhp1`r5{>36@HY?p400^y%;XoUotb1rmvpyLWb#FDgifaU_BJO(5ynTTH zCdY_^4}j}416IQ|(OhIg2x!`+?Hmz@_Jcpl+2Cw;LAd$#jdqP7*C1axW1S7da@07P*k7g*qk%ok7 zP!<&MzBj@7!DGrIM%!+;_gfDSkNpRHyPp1)oIXkGn2~X*2|B6M1f*@+0(Y%pqZ53T zO(}wz_WPT{8;RiGU3Q9`Ys%@~?Ij4BP40HqL|@TGqG?@x>50}nr^3ScOYiIfpuFe| zj!`EFFWr6rqaVO;gsGAyxQU-&?0ZLDrwvo847ToWZq_ETertcF@5|FZ4}~Z{eE0x+S%6FH@9zey-BMovgJ!~xaZkIT;?=$g+zSIwPPBb3 zu#pqH@K;}0#>ct+%vF0J^Gm8r-IC{Bt}#&OXj*#R}_B zz@#YY_beM#CUTSIWhpH>7HA~OE|Z)o+Ss#au@6#1u0NZ4jyI{(-gDn%v zML_1f^U;)%KMx@fYQLVH8GMYq>lv9MfwadO)r0&;OI3Z?92Ecn%!shhQF45yG~!UU z_mUsHfo$=CJ^4~rRu%^~dyKw}dpGptw(0TTE`XK3(D-O;R<4+*hoL6s|8izGR9^!9 z6=;}LYuAqp8Dd7db?zUYKlu=_1o|+Qb`LuI2w^x##uM}}Apjr(85PD3#eVl6&K;SN From 6a5dd6c89e7fd93075e80c72a86a550deedbe373 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Mar 2015 21:30:18 -0400 Subject: [PATCH 04/15] Aggressive grabs prevent missing with weapons --- code/modules/mob/mob_helpers.dm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e8339965c9..35636fb828 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -232,17 +232,22 @@ var/list/global/organ_rel_size = list( /proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0) zone = check_zone(zone) - // you can only miss if your target is standing and not restrained - if(!target.buckled && !target.lying) - var/miss_chance = 10 - if (zone in base_miss_chance) - miss_chance = base_miss_chance[zone] - miss_chance = max(miss_chance + miss_chance_mod, 0) - if(prob(miss_chance)) - if(prob(70)) - return null - return pick(base_miss_chance) - + // you cannot miss if your target is prone or restrained + if(target.buckled || target.lying) + return zone + // if your target is being grabbed aggressively by someone you cannot miss either + for(var/obj/item/weapon/grab/G in target.grabbed_by) + if(G.state >= GRAB_AGGRESSIVE) + return zone + + var/miss_chance = 10 + if (zone in base_miss_chance) + miss_chance = base_miss_chance[zone] + miss_chance = max(miss_chance + miss_chance_mod, 0) + if(prob(miss_chance)) + if(prob(70)) + return null + return pick(base_miss_chance) return zone From 812ff9869d7c763a815de7acb6792f5d86aec67c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 00:41:55 -0400 Subject: [PATCH 05/15] Implements projectile point blank damage multipliers for targets being grabbed. --- code/modules/mob/living/living.dm | 2 +- code/modules/projectiles/gun.dm | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8995183db9..fce4e3edcc 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -530,7 +530,7 @@ del(G) if(GRAB_NECK) //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun. - if (((world.time - G.assailant.l_move_time < 20 || !L.stunned) && prob(15)) || prob(3)) + if (((world.time - G.assailant.l_move_time < 30 || !L.stunned) && prob(15)) || prob(3)) L.visible_message("[L] has broken free of [G.assailant]'s headlock!") del(G) if(resisting) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index c03df810de..596f4de055 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -197,9 +197,22 @@ x_offset = rand(-1,1) //Point blank bonus - if(pointblank) P.damage *= 1.3 - - //TODO: accuracy modifiers + if(pointblank) + var/damage_mult = 1.3 //default point blank multiplier + + //determine multiplier due to the target being grabbed + if(ismob(target)) + var/mob/M = target + if(M.grabbed_by.len) + var/grabstate = 0 + for(var/obj/item/weapon/grab/G in M.grabbed_by) + grabstate = max(grabstate, G.state) + if(grabstate >= GRAB_NECK) + damage_mult = 1.5 + else if (grabstate >= GRAB_AGGRESSIVE) + damage_mult = 3.0 + + P.damage *= damage_mult if(params) P.set_clickpoint(params) From c4e4c7732000654e5d2d62a87a97ad7ec1a14203 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 01:25:54 -0400 Subject: [PATCH 06/15] Having a neck grab on someone causes them to be hit by projectiles first instead of you. If however the bullet misses or passes through the person being grabbed then it continues on and may still hit the person doing the grabbing. --- code/modules/projectiles/projectile.dm | 7 +++++++ code/setup.dm | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9b710409a1..948998c522 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -194,6 +194,13 @@ if(ismob(A)) var/mob/M = A if(istype(A, /mob/living)) + //if they have a neck grab on someone, that person gets hit instead + for(var/obj/item/weapon/grab/G in list(M.l_hand, M.r_hand)) + if(G.state >= GRAB_NECK) + //If Bump() returns 0 (missed them or went through them) then we continue on to attack M. + if(Bump(G.affecting)) + return + passthrough = !attack_mob(M, distance) else passthrough = 1 //so ghosts don't stop bullets diff --git a/code/setup.dm b/code/setup.dm index 0a09af0cd4..7702564676 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -401,10 +401,10 @@ #define XENO_HOST 32768 // Tracks whether we're gonna be a baby alien's mummy. // Grab levels. +#define GRAB_UPGRADING -1 #define GRAB_PASSIVE 1 #define GRAB_AGGRESSIVE 2 #define GRAB_NECK 3 -#define GRAB_UPGRADING 4 #define GRAB_KILL 5 // Security levels. From e6e0c870629c80ddfac3424cfaa1129e11735ad5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 01:53:11 -0400 Subject: [PATCH 07/15] Aggressive grab auto hit only applies to close targets and melee attacks --- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/mob_helpers.dm | 9 +++++---- code/modules/projectiles/projectile.dm | 15 ++++++++++----- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 83076373e4..6012adb0dd 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -319,7 +319,7 @@ emp_act if (O.throw_source) var/distance = get_dist(O.throw_source, loc) miss_chance = max(15*(distance-2), 0) - zone = get_zone_with_miss_chance(zone, src, miss_chance) + zone = get_zone_with_miss_chance(zone, src, miss_chance, ranged_attack=1) if(!zone) visible_message("\blue \The [O] misses [src] narrowly!") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 35636fb828..95de6cdfb4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -229,16 +229,17 @@ var/list/global/organ_rel_size = list( // Emulates targetting a specific body part, and miss chances // May return null if missed // miss_chance_mod may be negative. -/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0) +/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0, var/ranged_attack=0) zone = check_zone(zone) // you cannot miss if your target is prone or restrained if(target.buckled || target.lying) return zone // if your target is being grabbed aggressively by someone you cannot miss either - for(var/obj/item/weapon/grab/G in target.grabbed_by) - if(G.state >= GRAB_AGGRESSIVE) - return zone + if(!ranged_attack) + for(var/obj/item/weapon/grab/G in target.grabbed_by) + if(G.state >= GRAB_AGGRESSIVE) + return zone var/miss_chance = 10 if (zone in base_miss_chance) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 948998c522..23ef9e03c3 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -135,16 +135,21 @@ xo = new_x - starting_loc.x //Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. -/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier) +/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) //accuracy bonus from aiming - if (istype(shot_from, /obj/item/weapon/gun)) //If you aim at someone beforehead, it'll hit more often. - var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim + if (istype(shot_from, /obj/item/weapon/gun)) + var/obj/item/weapon/gun/daddy = shot_from miss_modifier -= round(15*daddy.accuracy) - if (daddy.aim_targets && original in daddy.aim_targets) //As opposed to no-delay pew pew + + //If you aim at someone beforehead, it'll hit more often. + //Kinda balanced by fact you need like 2 seconds to aim + //As opposed to no-delay pew pew + if (daddy.aim_targets && original in daddy.aim_targets) miss_modifier += -30 //roll to-hit - var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, max(miss_modifier + 15*(distance-2), 0)) + miss_modifier = max(miss_modifier + 15*(distance-2), 0) + var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1)) if(!hit_zone) visible_message("\The [src] misses [target_mob] narrowly!") return 0 From 6c794a86082f506038043d1af172529c129207c5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Mar 2015 02:02:08 -0400 Subject: [PATCH 08/15] Fixes damage multiplier mixup, bumped var not being reset --- code/modules/projectiles/gun.dm | 4 ++-- code/modules/projectiles/projectile.dm | 14 +++++++------- code/setup.dm | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 596f4de055..05b877f87e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -208,9 +208,9 @@ for(var/obj/item/weapon/grab/G in M.grabbed_by) grabstate = max(grabstate, G.state) if(grabstate >= GRAB_NECK) - damage_mult = 1.5 - else if (grabstate >= GRAB_AGGRESSIVE) damage_mult = 3.0 + else if (grabstate >= GRAB_AGGRESSIVE) + damage_mult = 1.5 P.damage *= damage_mult diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 23ef9e03c3..1400c6ca58 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -181,7 +181,7 @@ return 1 -/obj/item/projectile/Bump(atom/A as mob|obj|turf|area) +/obj/item/projectile/Bump(atom/A as mob|obj|turf|area, forced=0) if(A == src) return 0 //no @@ -189,7 +189,7 @@ loc = A.loc return 0 //cannot shoot yourself - if(bumped || (A in permutated)) + if((bumped && !forced) || (A in permutated)) return 0 var/passthrough = 0 //if the projectile should continue flying @@ -200,11 +200,11 @@ var/mob/M = A if(istype(A, /mob/living)) //if they have a neck grab on someone, that person gets hit instead - for(var/obj/item/weapon/grab/G in list(M.l_hand, M.r_hand)) - if(G.state >= GRAB_NECK) - //If Bump() returns 0 (missed them or went through them) then we continue on to attack M. - if(Bump(G.affecting)) - return + var/obj/item/weapon/grab/G = locate() in M + if(G && G.state >= GRAB_NECK) + visible_message("\The [M] uses [G.affecting] as a shield!") + if(Bump(G.affecting, forced=1)) + return //If Bump() returns 0 (keep going) then we continue on to attack M. passthrough = !attack_mob(M, distance) else diff --git a/code/setup.dm b/code/setup.dm index 7702564676..0a09af0cd4 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -401,10 +401,10 @@ #define XENO_HOST 32768 // Tracks whether we're gonna be a baby alien's mummy. // Grab levels. -#define GRAB_UPGRADING -1 #define GRAB_PASSIVE 1 #define GRAB_AGGRESSIVE 2 #define GRAB_NECK 3 +#define GRAB_UPGRADING 4 #define GRAB_KILL 5 // Security levels. From 8e5751a63222db70172bd8028f9201086da16486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 19:27:36 +0100 Subject: [PATCH 09/15] Bodyscanner : idle 60, active 10k --- code/game/machinery/adv_med.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 98ebc5a626..f06d912f2e 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -17,6 +17,9 @@ /*/obj/machinery/bodyscanner/allow_drop() return 0*/ +/obj/machinery/bodyscanner/process() + return + /obj/machinery/bodyscanner/relaymove(mob/user as mob) if (user.stat) return From 78798e7548f229817a54470888784875dfe9ff84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 19:45:34 +0100 Subject: [PATCH 10/15] Added process on machines A to J. Changed some world iterations to machines iterations. --- code/game/machinery/ai_slipper.dm | 5 +++++ code/game/machinery/autolathe.dm | 7 +++++-- code/game/machinery/biogenerator.dm | 3 +++ code/game/machinery/bioprinter.dm | 5 +++++ code/game/machinery/buttons.dm | 3 +++ code/game/machinery/door_control.dm | 3 +++ code/game/machinery/flasher.dm | 5 ++++- code/game/machinery/hologram.dm | 3 +++ code/game/machinery/igniter.dm | 7 +++++-- code/game/machinery/jukebox.dm | 8 ++++++++ 10 files changed, 44 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 3f2b1dc3bb..a72b38a589 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -4,6 +4,8 @@ icon_state = "motion0" layer = 3 anchored = 1.0 + use_power = 1 + idle_power_usage = 10 var/uses = 20 var/disabled = 1 var/lethal = 0 @@ -13,6 +15,9 @@ var/cooldown_on = 0 req_access = list(access_ai_upload) +/obj/machinery/ai_slipper/process() + return + /obj/machinery/ai_slipper/New() ..() update_icon() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 5361bea23a..7fb4160d16 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -23,6 +23,9 @@ var/datum/wires/autolathe/wires = null +/obj/machinery/autolathe/process() + return + /obj/machinery/autolathe/New() ..() @@ -233,8 +236,7 @@ return busy = 1 - //This needs some work. - use_power(max(2000, (making.power_use*multiplier))) + update_use_power(2) //Check if we still have the materials. for(var/material in making.resources) @@ -253,6 +255,7 @@ sleep(build_time) busy = 0 + update_use_power(1) //Sanity check. if(!making || !src) return diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 4afd4f0e44..35a70dd30c 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -14,6 +14,9 @@ var/build_eff = 1 var/eat_eff = 1 +/obj/machinery/biogenerator/process() + return + /obj/machinery/biogenerator/New() ..() var/datum/reagents/R = new/datum/reagents(1000) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index a0ac4258cc..fae30db595 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -7,6 +7,8 @@ anchored = 1 density = 1 + use_power = 1 + idle_power_usage = 40 icon_state = "bioprinter" @@ -21,6 +23,9 @@ "liver" = list(/obj/item/organ/liver, 50) ) +/obj/machinery/bioprinter/process() + return + /obj/machinery/bioprinter/prosthetics name = "prosthetics fabricator" desc = "It's a machine that prints prosthetic organs." diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index ad72835fae..51772b5aa3 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,6 +10,9 @@ idle_power_usage = 2 active_power_usage = 4 +/obj/machinery/button/process() + return + /obj/machinery/button/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 51bc9b69e6..5d996e6569 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -34,6 +34,9 @@ idle_power_usage = 2 active_power_usage = 4 +/obj/machinery/door_control/process() + return + /obj/machinery/door_control/attack_ai(mob/user as mob) if(wires & 2) return src.attack_hand(user) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 2ebefc8625..49e8761264 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -22,6 +22,9 @@ base_state = "pflash" density = 1 +/obj/machinery/flasher/process() + return + /* /obj/machinery/flasher/New() sleep(4) //<--- What the fuck are you doing? D= @@ -133,7 +136,7 @@ active = 1 icon_state = "launcheract" - for(var/obj/machinery/flasher/M in world) + for(var/obj/machinery/flasher/M in machines) if(M.id == src.id) spawn() M.flash() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 71894c2983..4cf51f09b2 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -173,6 +173,9 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ idle_power_usage = 5 active_power_usage = 100 +/obj/machinery/hologram/process() + return + //Destruction procs. /obj/machinery/hologram/ex_act(severity) switch(severity) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index a9be665022..63bee09b9e 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -54,6 +54,9 @@ var/base_state = "migniter" anchored = 1 +/obj/machinery/sparker/process() + return + /obj/machinery/sparker/New() ..() @@ -129,12 +132,12 @@ active = 1 icon_state = "launcheract" - for(var/obj/machinery/sparker/M in world) + for(var/obj/machinery/sparker/M in machines) if (M.id == src.id) spawn( 0 ) M.ignite() - for(var/obj/machinery/igniter/M in world) + for(var/obj/machinery/igniter/M in machines) if(M.id == src.id) use_power(50) M.on = !( M.on ) diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 2a6755015b..d119fd3c44 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -16,6 +16,9 @@ datum/track/New(var/title_name, var/audio) anchored = 1 density = 1 power_channel = EQUIP + use_power = 1 + idle_power_usage = 10 + active_power_usage = 100 var/playing = 0 @@ -32,6 +35,9 @@ datum/track/New(var/title_name, var/audio) new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'), ) +/obj/machinery/media/jukebox/process() + return + /obj/machinery/media/jukebox/Del() StopPlaying() ..() @@ -189,6 +195,7 @@ datum/track/New(var/title_name, var/audio) A.forced_ambience = null playing = 0 + update_use_power(1) update_icon() @@ -205,4 +212,5 @@ datum/track/New(var/title_name, var/audio) A.play_ambience(M) playing = 1 + update_use_power(2) update_icon() From 9e464d823f6799daaef82850dc3eb0dc904c43c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 20:06:52 +0100 Subject: [PATCH 11/15] Added process to robo-fabs and teleporter. --- code/game/machinery/robot_fabricator.dm | 3 +++ code/game/machinery/teleporter.dm | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 0c3ae56115..1f4a765c9d 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -11,6 +11,9 @@ idle_power_usage = 40 active_power_usage = 10000 +/obj/machinery/robotic_fabricator/process() + return + /obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob) if (istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index f5db4a1ac0..4c257a38e6 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -86,7 +86,7 @@ /obj/machinery/computer/teleporter/attack_hand(user as mob) if(..()) return - + /* Ghosts can't use this one because it's a direct selection */ if(istype(user, /mob/dead/observer)) return @@ -175,6 +175,9 @@ active_power_usage = 2000 var/obj/machinery/computer/teleporter/com +/obj/machinery/teleport/hub/process() + return + /obj/machinery/teleport/hub/New() ..() underlays.Cut() @@ -311,6 +314,9 @@ active_power_usage = 2000 var/obj/machinery/teleport/hub/com +/obj/machinery/teleport/station/process() + return + /obj/machinery/teleport/station/New() ..() overlays.Cut() @@ -335,6 +341,8 @@ if (com) com.icon_state = "tele1" use_power(5000) + update_use_power(2) + com.update_use_power(2) for(var/mob/O in hearers(src, null)) O.show_message("\blue Teleporter engaged!", 2) src.add_fingerprint(usr) @@ -348,6 +356,8 @@ if (com) com.icon_state = "tele0" com.accurate = 0 + com.update_use_power(1) + update_use_power(1) for(var/mob/O in hearers(src, null)) O.show_message("\blue Teleporter disengaged!", 2) src.add_fingerprint(usr) From 1c67f811a7fe05670cbfc1cb8f6f00b6cf404904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 20:46:41 +0100 Subject: [PATCH 12/15] Updated power usage of the Autholathe. --- code/game/machinery/autolathe.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 7fb4160d16..3ad9cb9116 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -6,7 +6,7 @@ anchored = 1 use_power = 1 idle_power_usage = 10 - active_power_usage = 100 + active_power_usage = 2000 var/list/machine_recipes var/list/stored_material = list("metal" = 0, "glass" = 0) From a50bebcbae473465e691e45452a1c1521f3860de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 21:07:55 +0100 Subject: [PATCH 13/15] Added check for use_power in machinery.dm process --- code/game/machinery/machinery.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 042889157a..5a4e6d7255 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -126,7 +126,10 @@ Class Procs: ..() /obj/machinery/process()//If you dont use process or power why are you here - return PROCESS_KILL + if(!(use_power || idle_power_usage || active_power_usage)) + return PROCESS_KILL + + return /obj/machinery/emp_act(severity) if(use_power && stat == 0) From 2e571e5448fc453d3adbac5e4d8941f1a23b3357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Baldomir?= Date: Sat, 14 Mar 2015 21:38:23 +0100 Subject: [PATCH 14/15] Pass at removing empty process() on game/machinery --- code/game/machinery/adv_med.dm | 3 --- code/game/machinery/ai_slipper.dm | 2 -- code/game/machinery/autolathe.dm | 2 -- code/game/machinery/biogenerator.dm | 2 -- code/game/machinery/bioprinter.dm | 3 --- code/game/machinery/buttons.dm | 2 -- code/game/machinery/door_control.dm | 2 -- code/game/machinery/doppler_array.dm | 3 --- code/game/machinery/flasher.dm | 5 ++--- code/game/machinery/hologram.dm | 3 --- code/game/machinery/holosign.dm | 7 +++---- code/game/machinery/igniter.dm | 5 +++-- code/game/machinery/jukebox.dm | 2 -- code/game/machinery/mass_driver.dm | 5 +---- code/game/machinery/robot_fabricator.dm | 3 --- code/game/machinery/teleporter.dm | 5 ----- 16 files changed, 9 insertions(+), 45 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index f06d912f2e..98ebc5a626 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -17,9 +17,6 @@ /*/obj/machinery/bodyscanner/allow_drop() return 0*/ -/obj/machinery/bodyscanner/process() - return - /obj/machinery/bodyscanner/relaymove(mob/user as mob) if (user.stat) return diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index a72b38a589..5f6e40e414 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -15,8 +15,6 @@ var/cooldown_on = 0 req_access = list(access_ai_upload) -/obj/machinery/ai_slipper/process() - return /obj/machinery/ai_slipper/New() ..() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 3ad9cb9116..9b5cfaa526 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -23,8 +23,6 @@ var/datum/wires/autolathe/wires = null -/obj/machinery/autolathe/process() - return /obj/machinery/autolathe/New() diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 35a70dd30c..8fd27904ce 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -14,8 +14,6 @@ var/build_eff = 1 var/eat_eff = 1 -/obj/machinery/biogenerator/process() - return /obj/machinery/biogenerator/New() ..() diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index fae30db595..eab4af69a3 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -23,9 +23,6 @@ "liver" = list(/obj/item/organ/liver, 50) ) -/obj/machinery/bioprinter/process() - return - /obj/machinery/bioprinter/prosthetics name = "prosthetics fabricator" desc = "It's a machine that prints prosthetic organs." diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 51772b5aa3..ec844b6004 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,8 +10,6 @@ idle_power_usage = 2 active_power_usage = 4 -/obj/machinery/button/process() - return /obj/machinery/button/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 5d996e6569..25aff55578 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -34,8 +34,6 @@ idle_power_usage = 2 active_power_usage = 4 -/obj/machinery/door_control/process() - return /obj/machinery/door_control/attack_ai(mob/user as mob) if(wires & 2) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index c6744ef96a..dbe7f1b8a7 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -13,9 +13,6 @@ var/list/doppler_arrays = list() doppler_arrays -= src ..() -/obj/machinery/doppler_array/process() - return PROCESS_KILL - /obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,var/took) if(stat & NOPOWER) return if(z != z0) return diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 49e8761264..4f310de8b9 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -12,6 +12,8 @@ var/strength = 10 //How weakened targets are when flashed. var/base_state = "mflash" anchored = 1 + use_power = 1 + idle_power_usage = 2 /obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored name = "portable flasher" @@ -22,9 +24,6 @@ base_state = "pflash" density = 1 -/obj/machinery/flasher/process() - return - /* /obj/machinery/flasher/New() sleep(4) //<--- What the fuck are you doing? D= diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 4cf51f09b2..71894c2983 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -173,9 +173,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ idle_power_usage = 5 active_power_usage = 100 -/obj/machinery/hologram/process() - return - //Destruction procs. /obj/machinery/hologram/ex_act(severity) switch(severity) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 222975316f..e51025aee2 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -5,7 +5,9 @@ icon = 'icons/obj/holosign.dmi' icon_state = "sign_off" layer = 4 + use_power = 1 idle_power_usage = 2 + active_power_usage = 4 var/lit = 0 var/id = null var/on_icon = "sign_on" @@ -14,12 +16,9 @@ if (stat & (BROKEN|NOPOWER)) return lit = !lit - use_power = lit ? 1 : 0 + use_power = lit ? 2 : 1 update_icon() -/obj/machinery/holosign/process() - return - /obj/machinery/holosign/update_icon() if (!lit) icon_state = "sign_off" diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 63bee09b9e..50dc4e10b2 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -53,9 +53,10 @@ var/last_spark = 0 var/base_state = "migniter" anchored = 1 + use_power = 1 + idle_power_usage = 2 + active_power_usage = 4 -/obj/machinery/sparker/process() - return /obj/machinery/sparker/New() ..() diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index d119fd3c44..f87dc8ca9c 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -35,8 +35,6 @@ datum/track/New(var/title_name, var/audio) new/datum/track("Trai`Tor", 'sound/music/traitor.ogg'), ) -/obj/machinery/media/jukebox/process() - return /obj/machinery/media/jukebox/Del() StopPlaying() diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 2a3589db2d..b67bc17986 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -39,7 +39,4 @@ if(stat & (BROKEN|NOPOWER)) return drive() - ..(severity) - -/obj/machinery/mass_driver/process() - return \ No newline at end of file + ..(severity) \ No newline at end of file diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 1f4a765c9d..0c3ae56115 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -11,9 +11,6 @@ idle_power_usage = 40 active_power_usage = 10000 -/obj/machinery/robotic_fabricator/process() - return - /obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob) if (istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 4c257a38e6..9e68791df0 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -175,8 +175,6 @@ active_power_usage = 2000 var/obj/machinery/computer/teleporter/com -/obj/machinery/teleport/hub/process() - return /obj/machinery/teleport/hub/New() ..() @@ -314,9 +312,6 @@ active_power_usage = 2000 var/obj/machinery/teleport/hub/com -/obj/machinery/teleport/station/process() - return - /obj/machinery/teleport/station/New() ..() overlays.Cut() From 50f49936f011ecb83a80babfd7135ec39c3b33a6 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 15 Mar 2015 10:39:36 +0100 Subject: [PATCH 15/15] Fixes #8482. Adds a cryopod console. --- maps/exodus-1.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 77e7dcf8b3..010d100d9b 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3944,7 +3944,7 @@ "bxR" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay2) "bxS" = (/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "exterior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/space) -"bxU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor,/area/assembly/chargebay) +"bxU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/obj/machinery/computer/cryopod/robot{pixel_y = -30},/turf/simulated/floor,/area/assembly/chargebay) "bxV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research_port) "bxW" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bxX" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/machinery/light{dir = 8},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -7435,7 +7435,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbyobypbyobyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEbvPbyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbyOaJibyPblMblNaJibwbbyRbyRbySbyTbxCbyUbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAbwubclbdQbcnbzrbzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbzHbzIbwwbwwbzJbnMbnMbzKbzLbzLbzLbzMbzNbwGbwJbrgbwJbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbzVbgGbrNbwXbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbwIbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbAobApbAqaJibAraRqaRpaJibxbbwYbxhbAvbAwbAxbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbAIbxtbAMbANbAObnvblUbsdbnwbsgbsfbaAbPObpjbxubxUbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbBqbBrbBsbBtbTIbBvbBwbBwbBxbBybBzbuQbuRbBAbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbBEbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbBGbgGbBHbBIbgGbBJbgFbgGbgGbyjbvsbvtbAbbAcbAdbyEbvwbBLbBMbBNbBMbBObvwbBPbBQbBRbAhbxrbBSbxrbAjbyQbBUbBVbyNbBWbzmbBYbBZbCabCabCbbCcbAraRqaRpaJibAsbCebCebySbCfbxCbCgbChbxCbCibCjbCjbCkbwkbClbCmbwkbwkbwkbwkbwkbwkbCnbwkbwkbwmbCoaXKaXKaXKaXKbSwbpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbCrbCsbCtbBhbCubCvbCwbCxbCxbCxbCybCzbSubCBbCCbCDbCEbTGbCGbCHbCGbAtbCJbzKbzLbzMbCKbzNbCLaaaaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbAubxcbvtbAbbCTbxcbCUbvwbCVbALbCXbAWbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbAXbDvbDwbDxbDybDzbDAbyWbDBbBKbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbDXbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbCdbBXbEnbzKbzMbCJbEobEpbCAbErbEsbCIbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbAubxcbvtbAbbCTbxcbCUbvwbCVbALbCXbAWbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbAXbDvbDwbDxbDybDzbDAbyWbDBbBKbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObBTbDQbDRbCpbVLbVMbDUbVAbDWbDXbCxbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbCdbBXbEnbzKbzMbCJbEobEpbCAbErbEsbCIbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbEwbExbEwbEybEzbEAbEAbEAbEAbEAbEBbECbEDbzTbEEbdPbEFbEGbEHbEIbEJbtzbEKbELbEMbfmbtCbENbAbbEObEPbyEbvwbEQbERbESbBMbETbvwbEUbEVbEWbAhbEXbvCbEYbAjbFabFbbFcbyNbFdbFebFfbFgbDnbDobFhaJibxwaRqaRpbVjbFjbFkbFlbFmbFnbFobFpbFqbxCbxFbxFbFrbxFbwkbFsbFtbFubFvbFwbFxbDJbFybDLbFzbFAbFBbDObFCbFDbFEbFFbVlbDXbVybVAbFJbDXbDXbFKbFLbFMbFLbFLbFNbFObFPbFQbFRbFSbCvbFTbFUbFVbFWbFXbFYbFZbGabGbbGcbGdaafaafbCJbGebGfbGgbGhbGibGjbGkbCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbGubGtbGvbGwbGxbGybGzbtCbvtbAbbGAbGBbtCbtGbtGbtGbtGbtGbGCbtGbtGbtGbtGbtGbtGbshbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJiaJiaJibxwaRqaRpbVjbGEbFkbCSbGGbCWbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbGWbGXbGYbGZbHabHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbHibwwbwwbwwbzAbHjbzAbzAbHkbBhbCubCvbFTbHlbCYbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbCJbBybCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbDebHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbHMbHLbHNbHObqybHQbHRbAabHSbAabHTbAabzZbHUbHVbHWbHXbHYbHZbxwaRqbDsaJlbDtbDubDtbDCbDPbxCbIbbIcbIdbIebIfbIgbIhbIibIjbIkbwmbIlbImbInbDJbDTbElbIpbIqbIrbFDbIsbItbIubCpbIvbIwbIxbIybUdbIAbIBbICbIDbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbILbIMbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbCJaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa