From 8b232deb0fffa9cb0216d74ac9064fbd7bae708e Mon Sep 17 00:00:00 2001 From: Albert Iordache Date: Tue, 17 Apr 2012 20:41:27 +0300 Subject: [PATCH 1/7] Removed checks that weren't needed from floorbot's process() --- code/game/machinery/bots/floorbot.dm | 32 +++++++++++++--------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index d33735b5aa..44cfca6938 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -163,32 +163,30 @@ if(src.repairing) return var/list/floorbottargets = list() - if(!src.target || src.target == null) + if(!src.target) for(var/obj/machinery/bot/floorbot/bot in world) if(bot != src) floorbottargets += bot.target - if(src.amount <= 0 && ((src.target == null) || !src.target)) + if(src.amount <= 0 && !src.target) if(src.eattiles) for(var/obj/item/stack/tile/plasteel/T in view(7, src)) if(T != src.oldtarget && !(target in floorbottargets)) src.oldtarget = T src.target = T break - if(src.target == null || !src.target) - if(src.maketiles) - if(src.target == null || !src.target) - for(var/obj/item/stack/sheet/metal/M in view(7, src)) - if(!(M in floorbottargets) && M != src.oldtarget && M.amount == 1 && !(istype(M.loc, /turf/simulated/wall))) - src.oldtarget = M - src.target = M - break + if(!src.target && src.maketiles) + for(var/obj/item/stack/sheet/metal/M in view(7, src)) + if(!(M in floorbottargets) && M != src.oldtarget && M.amount == 1 && !(istype(M.loc, /turf/simulated/wall))) + src.oldtarget = M + src.target = M + break else return if(prob(5)) for(var/mob/O in viewers(src, null)) O.show_message(text("[src] makes an excited booping beeping sound!"), 1) - if(!src.target || src.target == null) + if(!src.target == null) if(targetdirection != null) /* for (var/turf/space/D in view(7,src)) @@ -202,31 +200,31 @@ if(istype(T, /turf/space)) src.oldtarget = T src.target = T - if(!src.target || src.target == null) + if(!src.target) for (var/turf/space/D in view(7,src)) if(!(D in floorbottargets) && D != src.oldtarget && (D.loc.name != "Space") && !istype(D.loc, /area/shuttle)) src.oldtarget = D src.target = D break - if((!src.target || src.target == null ) && src.improvefloors) + if(!src.target && src.improvefloors) for (var/turf/simulated/floor/F in view(7,src)) if(!(F in floorbottargets) && F != src.oldtarget && F.icon_state == "Floor1" && !(istype(F, /turf/simulated/floor/plating))) src.oldtarget = F src.target = F break - if((!src.target || src.target == null) && src.eattiles) + if(!src.target && src.eattiles) for(var/obj/item/stack/tile/plasteel/T in view(7, src)) if(!(T in floorbottargets) && T != src.oldtarget) src.oldtarget = T src.target = T break - if(!src.target || src.target == null) + if(!src.target) if(src.loc != src.oldloc) src.oldtarget = null return - if(src.target && (src.target != null) && src.path.len == 0) + if(src.target && src.path.len == 0) spawn(0) if(!istype(src.target, /turf/)) src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30) @@ -237,7 +235,7 @@ src.oldtarget = src.target src.target = null return - if(src.path.len > 0 && src.target && (src.target != null)) + if(src.path.len > 0 && src.target) step_to(src, src.path[1]) src.path -= src.path[1] else if(src.path.len == 1) From 249f38d464214d97b586d9f50c996cd06cb07ee4 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 17 Apr 2012 19:02:18 +0100 Subject: [PATCH 2/7] Adds a click sounds for empty guns. Adds supervisors for the AI. Adds some A17 implants and sprites. --- code/defines/obj/toy.dm | 2 + code/game/jobs/job/silicon.dm | 1 + code/game/objects/devices/flash.dm | 2 + .../objects/items/weapons/implants/implant.dm | 108 +++++++++++++++++- code/modules/projectiles/gun.dm | 4 + empty.ogg | Bin 0 -> 5376 bytes icons/obj/power.dmi | Bin 20242 -> 21666 bytes 7 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 empty.ogg diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm index 51eeb81a11..9011ac00c0 100644 --- a/code/defines/obj/toy.dm +++ b/code/defines/obj/toy.dm @@ -110,6 +110,8 @@ src.add_fingerprint(user) if (src.bullets < 1) user.show_message("\red *click* *click*", 2) + for(var/mob/K in viewers(usr)) + K << 'empty.ogg' return playsound(user, 'Gunshot.ogg', 100, 1) src.bullets-- diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index f249ada8cb..d91b4f89d9 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -5,6 +5,7 @@ faction = "Station" total_positions = 0 spawn_positions = 1 + supervisors = "your laws" equip(var/mob/living/carbon/human/H) diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm index 0bcf591130..8693df4016 100644 --- a/code/game/objects/devices/flash.dm +++ b/code/game/objects/devices/flash.dm @@ -34,6 +34,8 @@ if(shots_left <= 0) user.show_message("\red *click* *click*", 2) + for(var/mob/K in viewers(usr)) + K << 'empty.ogg' return playsound(src.loc, 'flash.ogg', 100, 1) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 7c258fc4ea..340dcc3925 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -335,4 +335,110 @@ the implant may become unstable and either pre-maturely inject the subject or si implanted(mob/source as mob) src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) - source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." \ No newline at end of file + source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." + +/*// --------------------LASERS WORK FROM HERE, AUGMENTATIONS SHIZZLE---------------------- +/obj/item/weapon/implant/augmentation/thermalscanner + name = "Thermal Scanner Augmentation" + desc = "Makes you see humans through walls" + + get_data() + var/dat = {" +Implant Specifications:
+Name: NanoTrasen Thermal Implant
+Life: Ten years.
+Important Notes: Personnel injected with this device tend to be able to see lifeforms through life using thermal.
+
+Implant Details:
+Function: Contains a small pod of nanobots that manipulate the host's eye functions.
+Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} + return dat + + + implanted(M as mob) + if(istype(M, /mob/living/carbon/human)) + vision_flags = SEE_MOBS + invisa_view = 2 + usr << "You suddenly start seeing body temperatures of whoever is around you." + else + usr << "This implant is not compatible!" + return + +/obj/item/weapon/implant/augmentation/mesonscanner + name = "Meson Scanner Augmentation" + desc = "Makes you see floor and wall layouts through walls." + + get_data() + var/dat = {" +Implant Specifications:
+Name: NanoTrasen Meson Implant
+Life: Ten years.
+Important Notes: Personnel injected with this device tend to be able to see floor and wall layouts through walls.
+
+Implant Details:
+Function: Contains a small pod of nanobots that manipulate the host's eye functions.
+Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} + return dat + + + implanted(M as mob) + if(istype(M, /mob/living/carbon/human)) + vision_flags = SEE_TURFS + usr << "You suddenly start seeing body temperatures of whoever is around you." + else + usr << "This implant is not compatible!" + return + +/obj/item/weapon/implant/augmentation/medicalhud + name = "Medical HUD Augmentation" + desc = "Makes you see the medical condition of a person." + + get_data() + var/dat = {" +Implant Specifications:
+Name: NanoTrasen Med HUD Implant
+Life: Ten years.
+Important Notes: Personnel injected with this device tend to be able to see the medical condition of a person.
+
+Implant Details:
+Function: Contains a small pod of nanobots that manipulate the host's eye functions.
+Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} + return dat + + + implanted(M as mob) + if(istype(M, /mob/living/carbon/human)) + + src.hud = new/obj/item/clothing/glasses/hud/health(src) + usr << "You suddenly start seeing body temperatures of whoever is around you." + else + usr << "This implant is not compatible!" + return + +/obj/item/weapon/implant/augmentation/securityhud + name = "Security HUD Augmentation" + desc = "Makes you see the Security standings of a person." + + get_data() + var/dat = {" +Implant Specifications:
+Name: NanoTrasen Sec HUD Implant
+Life: Ten years.
+Important Notes: Personnel injected with this device tend to be able to see the security standings of a person.
+
+Implant Details:
+Function: Contains a small pod of nanobots that manipulate the host's eye functions.
+Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} + return dat + + + implanted(M as mob) + if(istype(M, /mob/living/carbon/human)) + var/obj/item/clothing/glasses/hud/security/hud = null + + src.hud = new/obj/item/clothing/glasses/hud/security(src) + + usr << "You suddenly start seeing body temperatures of whoever is around you." + else + usr << "This implant is not compatible!" + return*/ \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index e90fb1203f..665012518a 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -162,6 +162,8 @@ if(!special_check(user)) return if(!load_into_chamber()) user.visible_message("*click click*", "\red *click*") + for(var/mob/K in viewers(usr)) + K << 'empty.ogg' return if(!in_chamber) return @@ -250,6 +252,8 @@ told_cant_shoot = 0 else usr.visible_message("*click click*", "\red *click*") + for(var/mob/K in viewers(usr)) + K << 'empty.ogg' var/dir_to_fire = sd_get_approx_dir(M,T) if(dir_to_fire != M.dir) M.dir = dir_to_fire diff --git a/empty.ogg b/empty.ogg new file mode 100644 index 0000000000000000000000000000000000000000..12ef9e5fce814ed82d8bbc47d4a24e75b064b83f GIT binary patch literal 5376 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 buZOgK_8#o8-MWp;4L`NA*Yv^QsP2CQi+vm^ literal 0 HcmV?d00001 diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 3460395fefdb25cd80050e5c404deafceb959455..c3a33cf52103a616899cb01216f26de2a6ef8ddb 100644 GIT binary patch literal 21666 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 literal 20242 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 From 2d719e6f80fc757a1b39a7549b10e562516c3d87 Mon Sep 17 00:00:00 2001 From: Mloc Date: Tue, 17 Apr 2012 19:18:10 +0100 Subject: [PATCH 3/7] Added LICENSE.txt. Signed-off-by: Mloc --- LICENSE.txt | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..20d40b6bce --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file From 23f13cb95d97dba0b31e910c435adca5f69f15ab Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Tue, 17 Apr 2012 11:55:53 -0700 Subject: [PATCH 4/7] Numerous bugfixes. --- code/datums/mind.dm | 32 ++++++++----------- code/game/gamemodes/newobjective.dm | 9 ++++++ code/modules/admin/player_panel.dm | 4 +-- code/modules/admin/verbs/adminjump.dm | 28 ++++++++-------- code/modules/clothing/glasses/hud.dm | 13 ++------ code/modules/mob/living/carbon/human/life.dm | 2 +- .../mob/living/carbon/monkey/monkey.dm | 26 +++++++++++++++ code/modules/mob/living/living.dm | 14 ++++++++ code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/silicon/say.dm | 4 +-- 10 files changed, 87 insertions(+), 47 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 7640a263f1..5e46cf6e39 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -312,25 +312,25 @@ datum/mind if(!def_value)//If it's a custom objective, it will be an empty string. def_value = "custom" - var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate","decapitate", "debrain", "protection", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom") + var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate","decapitate", "debrain", "protection", "frame", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom") if (!new_obj_type) return var/datum/objective/new_objective = null switch (new_obj_type) - if ("assassinate","protect","debrain","decapitate") + if ("assassinate","protection", "frame", "debrain","decapitate") //To determine what to name the objective in explanation text. - var/objective_type_capital = uppertext(copytext(new_obj_type, 1,2))//Capitalize first letter. - var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text. - var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string. +// var/objective_type_capital = uppertext(copytext(new_obj_type, 1,2))//Capitalize first letter. +// var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text. +// var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string. var/list/possible_targets = list("Free objective") for(var/datum/mind/possible_target in ticker.minds) - if ((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human)) + if ((possible_target != src) && possible_target.current && istype(possible_target.current, /mob/living/carbon/human)) possible_targets += possible_target.current var/mob/def_target = null - var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protection, /datum/objective/debrain, /datum/objective/decapitate) + var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protection, /datum/objective/frame, /datum/objective/debrain, /datum/objective/decapitate) if (objective&&(objective.type in objective_list) && objective:target) def_target = objective:target.current @@ -339,16 +339,11 @@ datum/mind var/objective_path = text2path("/datum/objective/[new_obj_type]") if (new_target == "Free objective") - new_objective = new objective_path + new_objective = new objective_path(null,"MODE",null) new_objective.owner = src - new_objective:target = null - new_objective.explanation_text = "Free objective" else - new_objective = new objective_path + new_objective = new objective_path(null,"MODE",new_target:mind) new_objective.owner = src - new_objective:target = new_target:mind - //Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops. - new_objective.explanation_text = "[objective_type] [new_target:real_name], the [new_target:mind:assigned_role=="MODE" ? (new_target:mind:special_role) : (new_target:mind:role_alt_title ? new_target:mind:role_alt_title : new_target:mind:assigned_role)]." if ("hijack") new_objective = new /datum/objective/hijack @@ -367,13 +362,14 @@ datum/mind new_objective.owner = src if ("steal") - var/list/possibilities = typesof(/datum/objective/steal) - /datum/objective/steal + var/list/possibilities = GenerateTheft(assigned_role,src) + var/list/temp_poss = possibilities[1] var/list/choices = list() - for(var/datum/objective/steal/name in possibilities) - choices[name.explanation_text] = name + for(var/datum/objective/steal/steal in temp_poss) + choices["[steal.steal_target]"] = steal var/new_target = input("Select target:", "Objective target") as null|anything in choices if (!new_target) return - new_objective = new choices[new_target] + new_objective = choices[new_target] new_objective.owner = src if("download","capture","absorb") diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 4eecedad28..0aacfc362c 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1167,6 +1167,10 @@ datum return 1 decapitate + New(var/text,var/joba,var/datum/mind/targeta) + target = targeta + job = joba + explanation_text = "Remove and recover the head of [target.current.real_name], the [target.assigned_role]." proc/find_target() ..() if(target && target.current) @@ -1249,6 +1253,11 @@ datum debrain//I want braaaainssss + New(var/text,var/joba,var/datum/mind/targeta) + target = targeta + job = joba + explanation_text = "Remove and recover the brain of [target.current.real_name], the [target.assigned_role]." + proc/find_target() ..() if(target && target.current) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index f65634c70b..e990a6d7d6 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -14,10 +14,10 @@ i++ if(i%2 == 0) color = "#f2f2f2" - var/real = (M.real_name == M.original_name ? M.real_name : "[M.original_name] (as [M.real_name])") + var/real = (M.real_name == M.original_name ? "[M.name]/[M.real_name]" : "[M.original_name] (as [M.name]/[M.real_name])") var/turf/T = get_turf(M) var/client_key = (M.key? M.key : "No key") - dat += "[M.name] \[[real]\]
[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])" // Adds current name + dat += "[real]
[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])" // Adds current name if(isobserver(M)) dat += "Ghost" else if(isalien(M)) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 696fa42ce6..943205551f 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -28,7 +28,7 @@ alert("Admin jumping disabled") return -/client/proc/jumptomob() +/client/proc/jumptomob(var/mob/M in world) set category = "Admin" set name = "Jump to Mob" @@ -37,12 +37,13 @@ return if(config.allow_admin_jump) - var/mobs = getmobs() - var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs - if(!selection) - return - - var/mob/M = mobs[selection] + if(!M || !istype(M)) + var/mobs = getmobs() + var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs + if(!selection) + return + + M = mobs[selection] var/mob/A = src.mob var/turf/T = get_turf(M) if(T && isturf(T)) @@ -94,7 +95,7 @@ else alert("Admin jumping disabled") -/client/proc/Getmob() +/client/proc/Getmob(var/mob/M) set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" @@ -102,11 +103,12 @@ src << "Only administrators may use this command." return if(config.allow_admin_jump) - var/mobs = getmobs() - var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs - var/mob/M = mobs[selection] - if(!istype(M)) - return + if(!M || !istype(M)) + var/mobs = getmobs() + var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs + M = mobs[selection] + if(!istype(M)) + return var/mob/A = src.mob var/turf/T = get_turf(A) if(T && isturf(T)) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 562403ee83..0899491ab8 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -107,16 +107,9 @@ break else C.images += image(tempHud,perp,"hudunknown") - if(hasorgans(perp)) - for(var/datum/organ/external/E in perp) - for(var/obj/item/weapon/implant/I in E.implant) - if(I.implanted) - if(istype(I,/obj/item/weapon/implant/tracking)) - C.images += image(tempHud,perp,"hud_imp_tracking") - if(istype(I,/obj/item/weapon/implant/loyalty)) - C.images += image(tempHud,perp,"hud_imp_loyal") - else - for(var/obj/item/weapon/implant/I in perp) + for(var/named in perp.organs) + var/datum/organ/external/E = perp.organs[named] + for(var/obj/item/weapon/implant/I in E.implant) if(I.implanted) if(istype(I,/obj/item/weapon/implant/tracking)) C.images += image(tempHud,perp,"hud_imp_tracking") diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ed1cfbb35b..b681d2f3aa 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -999,7 +999,7 @@ var/blood_max = 0 for(var/name in organs) var/datum/organ/external/temp = organs[name] - if(!temp.bleeding) + if(!temp.bleeding || temp.robot) //THAT WAS DUMB. continue // else // if(prob(35)) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 09d9b7cd6b..7e0e99380d 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -1021,3 +1021,29 @@ parts -= picked updatehealth() UpdateDamageIcon() + +/mob/living/carbon/monkey/getBruteLoss() + var/amount = 0.0 + for(var/name in organs) + var/datum/organ/external/O = organs[name] + if(!O.robot) amount+= O.brute_dam + return amount + +/mob/living/carbon/monkey/adjustBruteLoss(var/amount, var/used_weapon = null) + if(amount > 0) + take_overall_damage(amount, 0, used_weapon) + else + heal_overall_damage(-amount, 0) + +/mob/living/carbon/monkey/getFireLoss() + var/amount = 0.0 + for(var/name in organs) + var/datum/organ/external/O = organs[name] + if(!O.robot) amount+= O.burn_dam + return amount + +/mob/living/carbon/monkey/adjustFireLoss(var/amount,var/used_weapon = null) + if(amount > 0) + take_overall_damage(0, amount, used_weapon) + else + heal_overall_damage(0, -amount) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b455df6606..bb992f8705 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -95,6 +95,13 @@ L |= E:contents for(var/obj/item/smallDelivery/S in L) L |= S.wrapped + if(hasorgans(src)) + for(var/named in src:organs) + var/datum/organ/external/O = src:organs[named] + for(var/obj/item/weapon/implant/I in O.implant) + L |= I + if(istype(I, /obj/item/weapon/implant/compressed)) + L |= I:scanned for(var/obj/B in L) if(B.type == A) @@ -114,6 +121,13 @@ L |= E:contents for(var/obj/item/smallDelivery/S in L) L |= S.wrapped + if(hasorgans(src)) + for(var/named in src:organs) + var/datum/organ/external/O = src:organs[named] + for(var/obj/item/weapon/implant/I in O.implant) + L |= I + if(istype(I, /obj/item/weapon/implant/compressed)) + L |= I:scanned for(var/obj/item/weapon/reagent_containers/B in L) for(var/datum/reagent/R in B.reagents.reagent_list) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index dabef32f65..95de6528c0 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -339,7 +339,7 @@ for(var/mob/M in listening) eavesdroppers.Remove(M) for(var/mob/M in eavesdroppers) - if(M.stat || !M.client) + if(M.stat || !M.client || istype(M, /mob/living/silicon/pai) || M == src) eavesdroppers.Remove(M) for (var/obj/O in ((W | contents)-used_radios)) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 15d2456398..b1893efabc 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -16,8 +16,8 @@ if (length(message) >= 2) if ((copytext(message, 1, 3) == ":s") || (copytext(message, 1, 3) == ":S")) - if(istype(src, /mob/living/silicon/pai)) - return ..(message) +// if(istype(src, /mob/living/silicon/pai)) +// return ..(message) message = copytext(message, 3) message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) robot_talk(message) From 5899ed38fced584f2a0cf94030f00a5d99c60f27 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 17 Apr 2012 21:02:16 +0100 Subject: [PATCH 5/7] Hides starting CentCom global announcement, uses generic command report sound instead. Extended now a command report. --- code/game/gamemodes/extended/extended.dm | 16 ++++++---------- code/game/gamemodes/game_mode.dm | 5 +++-- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index c5208c4dc9..2c37c1bb84 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -6,21 +6,17 @@ uplink_welcome = "Syndicate Uplink Console:" uplink_uses = 10 -// Enable this and the below to have command reports in extended -// var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) -// var/const/waittime_h = 1800 + var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) + var/const/waittime_h = 1800 /datum/game_mode/announce() world << "The current game mode is - Extended Role-Playing!" world << "Just have fun and role-play!" /datum/game_mode/extended/pre_setup() -// setup_sectors() -// spawn_exporation_packs() return 1 -// Enable this and the above to have command reports in extended -///datum/game_mode/extended/post_setup() -// send_intercept() -// -// ..() \ No newline at end of file +/datum/game_mode/extended/post_setup() + spawn (rand(waittime_l, waittime_h)) // To reduce extended meta. + send_intercept() + ..() \ No newline at end of file diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4f3cdb9cf8..555229335d 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -232,11 +232,12 @@ Whitespace:Seperator;"} comm.messagetitle.Add("Cent. Com. Status Summary") comm.messagetext.Add(intercepttext) + world << sound('commandreport.ogg') - command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") +/* command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") world << sound('intercept.ogg') if(security_level < SEC_LEVEL_BLUE) - set_security_level(SEC_LEVEL_BLUE) + set_security_level(SEC_LEVEL_BLUE)*/ /datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=1) From f0e6f64a525534c6288798c216ed9ea349681ed9 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 17 Apr 2012 21:02:34 +0100 Subject: [PATCH 6/7] Fixes ERT headsets not appearing. --- code/game/objects/radio/headset.dm | 2 ++ code/game/response_team.dm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/radio/headset.dm b/code/game/objects/radio/headset.dm index 0f7fea4fc1..e2aa76282e 100644 --- a/code/game/objects/radio/headset.dm +++ b/code/game/objects/radio/headset.dm @@ -150,6 +150,8 @@ /obj/item/device/radio/headset/ert name = "CentCom Response Team headset" desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science." + icon_state = "com_headset" + item_state = "headset" freerange = 1 keyslot2 = new /obj/item/device/encryptionkey/ert diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 5cbcee8c72..2ab9c5416c 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -196,7 +196,7 @@ proc/trigger_armed_response_team(var/force = 0) /mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0) //Special radio setup - equip_if_possible(new /obj/item/device/radio/headset/ert, slot_ears) + equip_if_possible(new /obj/item/device/radio/headset/ert(src), slot_ears) //Adding Camera Network var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras. From 2c0c197d4cdbc5365a05d2736a9f02397e6f4bd8 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 17 Apr 2012 22:00:36 +0100 Subject: [PATCH 7/7] Fixes blue SMES. I'M SO SORRY --- icons/obj/power.dmi | Bin 21666 -> 21671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index c3a33cf52103a616899cb01216f26de2a6ef8ddb..23a90c3c21d6113b75809090124c5177e24b186e 100644 GIT binary patch delta 53 zcmV-50LuTOsR5^{0gxmCe6b~B0wFdOp__MXC?XG~*iiico90oxylutyb(j1Fdgwwr L@TyZ G0{>ASj~8eF