TG: There's a metric assload of stuff here, mostly in preparation to my massive
traitor expansion, so I'll try to be brief: - I added in the foundations for traitor factions. See factions.dm for all the different faction datums. They don't do anything yet. - I completely ported mob/var/mutations from a bitfield to a generic list. Mutation enumerated-identifiers are added into this list. For instance, TK = 1, COLD_RESISTANCE = 2, XRAY = 3, etc... The purpose of this was because bitwise operations could not actually be used after a certain size (because BYOND is stuck in the 16bit era). - I've added in completely-functional nano-augmentations. Check under implantnanoaug.dm for a list of implants and implaners. As mentioned previously, they are completely functional but may be slightly OP. Among these nanoaugs are Super Strength, Psionic Radar, Electric Hands, Energy Blade/Sword Synthesizer, Rebreather, Dermal Armor, Combat Reflexes, and Regenerative Nanorobots. I won't go into detail as to what they do, but hopefully they should be self- explanitory. If not, check out their descriptions in the file previously mentioned. - Added in a future traitor item, the Mind Batterer. Along with it a new .ogg file. - New telecomms bus mainframe sprite, thanks to WJohnston. - New holdable shield, sprites courtesy of Muncher (i had to mangle the side sprites because of a technical little issue. I'll change it back to the original soon). It can be retracted and expanded. Probably only going to be given to traitors. - A couple of minor bugfixes here and there, along with some code tidying. Hope this isn't too large a commit. I intended it to be MUCH larger, but I've decided to split up my Traitor Factions expansion into smaller commits. Revision: r3692 Author: vageyenaman
@@ -418,6 +418,7 @@
|
||||
#include "code\game\events\Events\SpaceCarp.dm"
|
||||
#include "code\game\events\Events\SpaceNinja.dm"
|
||||
#include "code\game\events\Events\VirusEpidemic.dm"
|
||||
#include "code\game\gamemodes\factions.dm"
|
||||
#include "code\game\gamemodes\game_mode.dm"
|
||||
#include "code\game\gamemodes\gameticker.dm"
|
||||
#include "code\game\gamemodes\intercept_report.dm"
|
||||
@@ -739,11 +740,13 @@
|
||||
#include "code\game\objects\items\weapons\tiles_wires.dm"
|
||||
#include "code\game\objects\items\weapons\tools.dm"
|
||||
#include "code\game\objects\items\weapons\twohanded.dm"
|
||||
#include "code\game\objects\items\weapons\wrappingpaper.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implant.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implantcase.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implantchair.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implanter.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implantfreedom.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implantnanoaug.dm"
|
||||
#include "code\game\objects\items\weapons\implants\implantpad.dm"
|
||||
#include "code\game\objects\radio\beacon.dm"
|
||||
#include "code\game\objects\radio\electropack.dm"
|
||||
|
||||
@@ -21,12 +21,17 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
||||
var/items // List of items
|
||||
var/list/ItemList // Parsed list of items
|
||||
var/uses // Numbers of crystals
|
||||
var/uplink_data // designated uplink items
|
||||
// List of items not to shove in their hands.
|
||||
var/list/NotInHand = list(/obj/machinery/singularity_beacon/syndicate)
|
||||
|
||||
New()
|
||||
welcome = ticker.mode.uplink_welcome
|
||||
items = dd_replacetext(ticker.mode.uplink_items, "\n", "") // Getting the text string of items
|
||||
if(!welcome)
|
||||
welcome = ticker.mode.uplink_welcome
|
||||
if(!uplink_data)
|
||||
uplink_data = ticker.mode.uplink_items
|
||||
|
||||
items = dd_replacetext(uplink_data, "\n", "") // Getting the text string of items
|
||||
ItemList = dd_text2list(src.items, ";") // Parsing the items text string
|
||||
uses = ticker.mode.uplink_uses
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ datum/mind
|
||||
var/has_been_rev = 0//Tracks if this mind has been a rev or not
|
||||
var/rev_cooldown = 0
|
||||
|
||||
var/datum/faction/faction // associated faction
|
||||
|
||||
proc/transfer_to(mob/new_character)
|
||||
// multikey information is stored in the mob, not the mind, so
|
||||
// we need to clean this stuff up to avoid multikey alerts
|
||||
@@ -26,6 +28,7 @@ datum/mind
|
||||
current.computer_id = null
|
||||
|
||||
|
||||
|
||||
if(current)
|
||||
current.mind = null
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "This spell inflicts a set of mutations and disabilities upon the target."
|
||||
|
||||
var/disabilities = 0 //bits
|
||||
var/mutations = 0 //bits
|
||||
var/list/mutations = list() //mutation strings
|
||||
var/duration = 100 //deciseconds
|
||||
/*
|
||||
Disabilities
|
||||
@@ -13,22 +13,17 @@
|
||||
4th bit - ?
|
||||
5th bit - ?
|
||||
6th bit - ?
|
||||
Mutations
|
||||
1st bit - portals
|
||||
2nd bit - cold resist
|
||||
3rd bit - xray
|
||||
4th bit - hulk
|
||||
5th bit - clown
|
||||
6th bit - fat
|
||||
*/
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/genetic/cast(list/targets)
|
||||
|
||||
for(var/mob/target in targets)
|
||||
target.mutations |= mutations
|
||||
for(var/x in mutations)
|
||||
target.mutations.Add(x)
|
||||
target.disabilities |= disabilities
|
||||
spawn(duration)
|
||||
target.mutations &= ~mutations
|
||||
for(var/x in mutations)
|
||||
target.mutations.Remove(x)
|
||||
target.disabilities &= ~disabilities
|
||||
|
||||
return
|
||||
@@ -40,7 +40,7 @@
|
||||
range = -1
|
||||
include_user = 1
|
||||
|
||||
mutations = LASER | HULK
|
||||
mutations = list(LASER, HULK)
|
||||
duration = 300
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate
|
||||
|
||||
@@ -26,6 +26,20 @@
|
||||
IsShield()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/shield/energy
|
||||
name = "energy combat shield"
|
||||
desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere."
|
||||
icon = 'weapons.dmi'
|
||||
icon_state = "eshield0" // eshield1 for expanded
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
force = 3.0
|
||||
throwforce = 5.0
|
||||
throw_speed = 1
|
||||
throw_range = 4
|
||||
w_class = 1
|
||||
origin_tech = "materials=4;magnets=3;syndicate=4"
|
||||
var/active = 0
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod
|
||||
name = "null rod"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
/turf
|
||||
icon = 'floors.dmi'
|
||||
|
||||
@@ -1,23 +1,31 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
var/global/list/space_surprises = list( /obj/item/clothing/mask/facehugger/angry =4,
|
||||
// /obj/effect/critter/spesscarp =2,
|
||||
/obj/effect/critter/spesscarp/elite =2,
|
||||
// /obj/creature =0,
|
||||
// /obj/item/weapon/rcd =0,
|
||||
// /obj/item/weapon/rcd_ammo =0,
|
||||
// /obj/item/weapon/money =0,
|
||||
// /obj/item/weapon/cloaking_device =1,
|
||||
// /obj/item/weapon/gun/energy/teleport_gun =0,
|
||||
// /obj/item/weapon/rubber_chicken =0,
|
||||
/obj/item/weapon/melee/energy/sword/pirate =3,
|
||||
/obj/structure/closet/syndicate/resources =2,
|
||||
// /obj/machinery/wish_granter =1, // Okayyyy... Mayyyybe Kor is kinda sorta right. A little. Tiny bit. >.>
|
||||
// /obj/item/clothing/glasses/thermal =2, // Could maybe be cool as its own rapid mode, sorta like wizard. Maybe.
|
||||
// /obj/item/weapon/storage/box/stealth/ =2
|
||||
var/global/list/space_surprises = list( /obj/item/clothing/mask/facehugger/angry =4,
|
||||
// /obj/item/weapon/pickaxe/hammer =4, //Waiting on a sprite
|
||||
/obj/item/weapon/pickaxe/silver =4,
|
||||
/obj/item/weapon/pickaxe/drill =4,
|
||||
/obj/item/weapon/pickaxe/jackhammer =4,
|
||||
/obj/effect/critter/spesscarp/elite =3,
|
||||
/obj/item/weapon/pickaxe/diamond =3,
|
||||
/obj/item/weapon/pickaxe/diamonddrill =3,
|
||||
/obj/item/weapon/pickaxe/gold =3,
|
||||
/obj/item/weapon/pickaxe/plasmacutter =2,
|
||||
/obj/structure/closet/syndicate/resources =2,
|
||||
/obj/item/weapon/melee/energy/sword/pirate =1,
|
||||
// /obj/mecha/working/ripley/mining =1
|
||||
|
||||
// =11
|
||||
)
|
||||
// /obj/creature =0,
|
||||
// /obj/item/weapon/rcd =0,
|
||||
// /obj/item/weapon/rcd_ammo =0,
|
||||
// /obj/item/weapon/spacecash =0,
|
||||
// /obj/item/weapon/cloaking_device =0,
|
||||
// /obj/item/weapon/gun/energy/teleport_gun =0,
|
||||
// /obj/item/weapon/rubber_chicken =0,
|
||||
// /obj/machinery/wish_granter =0, // Okayyyy... Mayyyybe Kor is kinda sorta right. A little. Tiny bit. >.>
|
||||
// /obj/item/clothing/glasses/thermal =0, // Could maybe be cool as its own rapid mode, sorta like wizard. Maybe.
|
||||
// /obj/item/weapon/storage/box/stealth/ =0
|
||||
// =11
|
||||
)
|
||||
|
||||
var/global/list/spawned_surprises = list()
|
||||
|
||||
@@ -64,26 +72,26 @@ var/global/list/spawned_surprises = list()
|
||||
charges--
|
||||
insisting = 0
|
||||
|
||||
if (!(user.mutations & HULK))
|
||||
user.mutations |= HULK
|
||||
if (!(HULK in user.mutations))
|
||||
user.mutations.Add(HULK)
|
||||
|
||||
if (!(user.mutations & LASER))
|
||||
user.mutations |= LASER
|
||||
if (!(LASER in user.mutations))
|
||||
user.mutations.Add(LASER)
|
||||
|
||||
if (!(user.mutations & XRAY))
|
||||
user.mutations |= XRAY
|
||||
if (!(XRAY in user.mutations))
|
||||
user.mutations.Add(XRAY)
|
||||
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||
user.see_in_dark = 8
|
||||
user.see_invisible = 2
|
||||
|
||||
if (!(user.mutations & COLD_RESISTANCE))
|
||||
user.mutations |= COLD_RESISTANCE
|
||||
if (!(COLD_RESISTANCE in user.mutations))
|
||||
user.mutations.Add(COLD_RESISTANCE)
|
||||
|
||||
if (!(user.mutations & TK))
|
||||
user.mutations |= TK
|
||||
if (!(TK in user.mutations))
|
||||
user.mutations.Add(TK)
|
||||
|
||||
if(!(user.mutations & HEAL))
|
||||
user.mutations |= HEAL
|
||||
if(!(HEAL in user.mutations))
|
||||
user.mutations.Add(HEAL)
|
||||
|
||||
ticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "Avatar of the Wish Granter"
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
//Fibers~
|
||||
add_fibers(M)
|
||||
//He has no prints!
|
||||
if (M.mutations2 & mFingerprints)
|
||||
if (mFingerprints in M.mutations)
|
||||
if(fingerprintslast != M.key)
|
||||
fingerprintshidden += "(Has no fingerprints) Real name: [M.real_name], Key: [M.key]"
|
||||
fingerprintslast = M.key
|
||||
@@ -343,6 +343,7 @@
|
||||
|
||||
/atom/MouseDrop(atom/over_object as mob|obj|turf|area)
|
||||
spawn( 0 )
|
||||
|
||||
if (istype(over_object, /atom))
|
||||
over_object.MouseDrop_T(src, usr)
|
||||
return
|
||||
@@ -967,7 +968,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
src.hand_al(usr, usr.hand)
|
||||
else
|
||||
// ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD -------
|
||||
if(usr:mutations & LASER && usr:a_intent == "hurt" && world.time >= usr.next_move)
|
||||
if((LASER in usr:mutations) && usr:a_intent == "hurt" && world.time >= usr.next_move)
|
||||
// ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED -------
|
||||
var/turf/oloc
|
||||
var/turf/T = get_turf(usr)
|
||||
@@ -997,7 +998,6 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
usr.next_move = world.time + 6
|
||||
return
|
||||
|
||||
|
||||
/proc/CanReachThrough(turf/srcturf, turf/targetturf, atom/target)
|
||||
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( srcturf )
|
||||
|
||||
@@ -1026,8 +1026,38 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
return
|
||||
|
||||
/atom/proc/AltClick()
|
||||
if(hascall(src,"pull"))
|
||||
src:pull()
|
||||
|
||||
/* // NOT UNTIL I FIGURE OUT A GOOD WAY TO DO THIS SHIT
|
||||
if((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
if(!istype(src, /obj/item) && !istype(src, /mob) && !istype(src, /turf))
|
||||
if(!usr.equipped())
|
||||
|
||||
var/liftable = 0
|
||||
for(var/x in liftable_structures)
|
||||
if(findtext("[src.type]", "[x]"))
|
||||
liftable = 1
|
||||
break
|
||||
|
||||
if(liftable)
|
||||
|
||||
add_fingerprint(usr)
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(usr)
|
||||
G.assailant = usr
|
||||
if (usr.hand)
|
||||
usr.l_hand = G
|
||||
else
|
||||
usr.r_hand = G
|
||||
G.layer = 20
|
||||
G.structure = src
|
||||
G.synch()
|
||||
|
||||
visible_message("\red [usr] has picked up [src]!")
|
||||
|
||||
return
|
||||
else
|
||||
usr << "\red You can't pick this up!"
|
||||
*/
|
||||
|
||||
return
|
||||
|
||||
/atom/proc/ShiftClick()
|
||||
|
||||
@@ -430,63 +430,63 @@
|
||||
M.dna.check_integrity()
|
||||
|
||||
M.disabilities = 0
|
||||
M.mutations = 0
|
||||
M.mutations2 = 0
|
||||
M.mutations = list()
|
||||
|
||||
M.see_in_dark = 2
|
||||
M.see_invisible = 0
|
||||
|
||||
|
||||
if(ismuton(NOBREATHBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue You feel no need to breathe."
|
||||
M.mutations |= mNobreath
|
||||
M.mutations.Add(mNobreath)
|
||||
if(ismuton(REMOTEVIEWBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue Your mind expands"
|
||||
M.mutations |= mRemote
|
||||
M.mutations.Add(mRemote)
|
||||
if(ismuton(REGENERATEBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue You feel strange"
|
||||
M.mutations |= mRegen
|
||||
M.mutations.Add(mRegen)
|
||||
if(ismuton(INCREASERUNBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue You feel quick"
|
||||
M.mutations |= mRun
|
||||
M.mutations.Add(mRun)
|
||||
if(ismuton(REMOTETALKBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue You expand your mind outwards"
|
||||
M.mutations |= mRemotetalk
|
||||
M.mutations.Add(mRemotetalk)
|
||||
if(ismuton(MORPHBLOCK,M))
|
||||
if(prob(50))
|
||||
M.mutations |= mMorph
|
||||
M.mutations.Add(mMorph)
|
||||
M << "\blue Your skin feels strange"
|
||||
if(ismuton(BLENDBLOCK,M))
|
||||
if(prob(50))
|
||||
M.mutations |= mBlend
|
||||
M.mutations.Add(mBlend)
|
||||
M << "\blue You feel alone"
|
||||
if(ismuton(HALLUCINATIONBLOCK,M))
|
||||
if(prob(50))
|
||||
M.mutations2 |= mHallucination
|
||||
M.mutations.Add(mHallucination)
|
||||
M << "\blue Your mind says 'Hello'"
|
||||
if(ismuton(NOPRINTSBLOCK,M))
|
||||
if(prob(50))
|
||||
M.mutations2 |= mFingerprints
|
||||
M.mutations.Add(mFingerprints)
|
||||
M << "\blue Your fingers feel numb"
|
||||
if(ismuton(SHOCKIMMUNITYBLOCK,M))
|
||||
if(prob(50))
|
||||
M.mutations2 |= mShock
|
||||
M.mutations.Add(mShock)
|
||||
M << "\blue You feel strange"
|
||||
if(ismuton(SMALLSIZEBLOCK,M))
|
||||
if(prob(50))
|
||||
M << "\blue Your skin feels rubbery"
|
||||
M.mutations2 |= mSmallsize
|
||||
M.mutations.Add(mSmallsize)
|
||||
|
||||
|
||||
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),HULKBLOCK))
|
||||
if(inj || prob(5))
|
||||
M << "\blue Your muscles hurt."
|
||||
M.mutations |= HULK
|
||||
M.mutations.Add(HULK)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK))
|
||||
M.disabilities |= 2
|
||||
M << "\red You get a headache."
|
||||
@@ -504,7 +504,7 @@
|
||||
M << "\red You start coughing."
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK))
|
||||
M << "\red You feel lightheaded."
|
||||
M.mutations |= CLUMSY
|
||||
M.mutations.Add(CLUMSY)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK))
|
||||
M.disabilities |= 8
|
||||
M << "\red You twitch."
|
||||
@@ -514,21 +514,21 @@
|
||||
M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||
M.see_in_dark = 8
|
||||
M.see_invisible = 2
|
||||
M.mutations |= XRAY
|
||||
M.mutations.Add(XRAY)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK))
|
||||
M.disabilities |= 16
|
||||
M << "\red You feel nervous."
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK))
|
||||
if(inj || prob(30))
|
||||
M << "\blue Your body feels warm."
|
||||
M.mutations |= COLD_RESISTANCE
|
||||
M.mutations.Add(COLD_RESISTANCE)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK))
|
||||
M.disabilities |= 128
|
||||
M << "\red You can't seem to see anything."
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK))
|
||||
if(inj || prob(15))
|
||||
M << "\blue You feel smarter."
|
||||
M.mutations |= TK
|
||||
M.mutations.Add(TK)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK))
|
||||
M.disabilities |= 32
|
||||
M.ear_deaf = 1
|
||||
@@ -537,6 +537,7 @@
|
||||
M.disabilities |= 1
|
||||
M << "Your eyes feel weird..."
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////// Monkey Block
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human))
|
||||
// human > monkey
|
||||
@@ -920,7 +921,7 @@
|
||||
var/mob/occupant = src.connected.occupant
|
||||
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
|
||||
if(occupant && occupant.dna) //is there REALLY someone in there?
|
||||
if(occupant.mutations2 & NOCLONE)
|
||||
if(NOCLONE in occupant.mutations)
|
||||
dat += "The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure.<BR><BR>" //NOPE. -Pete
|
||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
||||
@@ -1220,7 +1221,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer1)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer1owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer1label)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations & NOCLONE)) src.temphtml += text("Save : <A href='?src=\ref[];b1addui=1'>UI</A> - <A href='?src=\ref[];b1adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b1addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(NOCLONE in src.connected.occupant.mutations)) src.temphtml += text("Save : <A href='?src=\ref[];b1addui=1'>UI</A> - <A href='?src=\ref[];b1adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b1addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer1) src.temphtml += text("Transfer to: <A href='?src=\ref[];b1transfer=1'>Occupant</A> - <A href='?src=\ref[];b1injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer1) src.temphtml += text("<A href='?src=\ref[];b1iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer1) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=1'>Save To</a> | <A href='?src=\ref[src];load_disk=1'>Load From</a><br>"
|
||||
@@ -1234,7 +1235,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer2)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer2owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer2label)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations2 & NOCLONE)) src.temphtml += text("Save : <A href='?src=\ref[];b2addui=1'>UI</A> - <A href='?src=\ref[];b2adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b2addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(NOCLONE in src.connected.occupant.mutations)) src.temphtml += text("Save : <A href='?src=\ref[];b2addui=1'>UI</A> - <A href='?src=\ref[];b2adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b2addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer2) src.temphtml += text("Transfer to: <A href='?src=\ref[];b2transfer=1'>Occupant</A> - <A href='?src=\ref[];b2injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer2) src.temphtml += text("<A href='?src=\ref[];b2iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer2) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=2'>Save To</a> | <A href='?src=\ref[src];load_disk=2'>Load From</a><br>"
|
||||
@@ -1248,7 +1249,7 @@
|
||||
src.temphtml += text("Data: <font color='blue'>[]</FONT><BR>", src.buffer3)
|
||||
src.temphtml += text("By: <font color='blue'>[]</FONT><BR>", src.buffer3owner)
|
||||
src.temphtml += text("Label: <font color='blue'>[]</FONT><BR>", src.buffer3label)
|
||||
if (src.connected.occupant && !(src.connected.occupant.mutations2 & NOCLONE)) src.temphtml += text("Save : <A href='?src=\ref[];b3addui=1'>UI</A> - <A href='?src=\ref[];b3adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b3addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.connected.occupant && !(NOCLONE in src.connected.occupant.mutations)) src.temphtml += text("Save : <A href='?src=\ref[];b3addui=1'>UI</A> - <A href='?src=\ref[];b3adduiue=1'>UI+UE</A> - <A href='?src=\ref[];b3addse=1'>SE</A><BR>", src, src, src)
|
||||
if (src.buffer3) src.temphtml += text("Transfer to: <A href='?src=\ref[];b3transfer=1'>Occupant</A> - <A href='?src=\ref[];b3injector=1'>Injector</A><BR>", src, src)
|
||||
//if (src.buffer3) src.temphtml += text("<A href='?src=\ref[];b3iso=1'>Isolate Block</A><BR>", src)
|
||||
if (src.buffer3) src.temphtml += "Disk: <A href='?src=\ref[src];save_disk=3'>Save To</a> | <A href='?src=\ref[src];load_disk=3'>Load From</a><br>"
|
||||
@@ -1409,7 +1410,7 @@
|
||||
src.buffer3label = sanitize(input("New Label:","Edit Label","Infos here"))
|
||||
dopage(src,"buffermenu")
|
||||
if (href_list["b1transfer"])
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations2 & NOCLONE || !src.connected.occupant.dna)
|
||||
if (!src.connected.occupant || (NOCLONE in src.connected.occupant.mutations) || !src.connected.occupant.dna)
|
||||
return
|
||||
if (src.buffer1type == "ui")
|
||||
if (src.buffer1iue)
|
||||
@@ -1425,7 +1426,7 @@
|
||||
src.connected.occupant.radiation += rand(20,50)
|
||||
src.delete = 0
|
||||
if (href_list["b2transfer"])
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations2 & NOCLONE || !src.connected.occupant.dna)
|
||||
if (!src.connected.occupant || (NOCLONE in src.connected.occupant.mutations) || !src.connected.occupant.dna)
|
||||
return
|
||||
if (src.buffer2type == "ui")
|
||||
if (src.buffer2iue)
|
||||
@@ -1441,7 +1442,7 @@
|
||||
src.connected.occupant.radiation += rand(20,50)
|
||||
src.delete = 0
|
||||
if (href_list["b3transfer"])
|
||||
if (!src.connected.occupant || src.connected.occupant.mutations2 & NOCLONE || !src.connected.occupant.dna)
|
||||
if (!src.connected.occupant || (NOCLONE in src.connected.occupant.mutations) || !src.connected.occupant.dna)
|
||||
return
|
||||
if (src.buffer3type == "ui")
|
||||
if (src.buffer3iue)
|
||||
|
||||
@@ -57,7 +57,7 @@ This system could be expanded to migrate all of our current mutations to. Maybe.
|
||||
|
||||
get_mutation(var/mob/living/carbon/M)
|
||||
M << "\blue You feel a searing heat inside your eyes!"
|
||||
M.mutations |= LASER
|
||||
M.mutations.Add(LASER)
|
||||
|
||||
Healing
|
||||
/*
|
||||
@@ -67,7 +67,7 @@ This system could be expanded to migrate all of our current mutations to. Maybe.
|
||||
|
||||
get_mutation(var/mob/living/carbon/M)
|
||||
M << "\blue You a pleasant warmth pulse throughout your body..."
|
||||
M.mutations |= HEAL
|
||||
M.mutations.Add(HEAL)
|
||||
|
||||
/* /datum/mutationreq :
|
||||
*
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
/*
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
+++++++++++++++++++++++++++++++++// //++++++++++++++++++++++++++++++++++
|
||||
@@ -1308,10 +1310,9 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
mouse_opacity = 1//So you can hit it with stuff.
|
||||
anchored = 1//Can't drag/grab the trapped mob.
|
||||
|
||||
var
|
||||
health = 25//How much health it has.
|
||||
mob/living/affecting = null//Who it is currently affecting, if anyone.
|
||||
mob/living/master = null//Who shot web. Will let this person know if the net was successful or failed.
|
||||
var/health = 25//How much health it has.
|
||||
var/mob/living/affecting = null//Who it is currently affecting, if anyone.
|
||||
var/mob/living/master = null//Who shot web. Will let this person know if the net was successful or failed.
|
||||
|
||||
proc
|
||||
healthcheck()
|
||||
@@ -1423,7 +1424,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
return
|
||||
|
||||
attack_hand()
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
usr << text("\blue You easily destroy the energy net.")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message(text("\red [] rips the energy net apart!", usr), 1)
|
||||
@@ -1454,4 +1455,4 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
health = max(0, health - aforce)
|
||||
healthcheck()
|
||||
..()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
usr << "\red This creature is not compatible with our biology."
|
||||
return
|
||||
|
||||
if (M.mutations2 & NOCLONE)
|
||||
if (NOCLONE in M.mutations)
|
||||
usr << "\red This creature's DNA is ruined beyond useability!"
|
||||
return
|
||||
|
||||
@@ -797,7 +797,7 @@ Tarjan shit, not recoding this -Sieve{R}*/
|
||||
usr << "\red We don't have enough stored chemicals to do that!"
|
||||
return
|
||||
|
||||
if(T.stat != 2 || (T.mutations & HUSK) || (!ishuman(T) && !ismonkey(T)))
|
||||
if(T.stat != 2 || (HUSK in T.mutations) || (!ishuman(T) && !ismonkey(T)))
|
||||
usr << "\red We can't transform that target!"
|
||||
return
|
||||
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
|
||||
// Normal factions:
|
||||
|
||||
/datum/faction
|
||||
var/name // the name of the faction
|
||||
var/desc // small paragraph explaining the traitor faction
|
||||
|
||||
var/list/restricted_species = list() // only members of these species can be recruited.
|
||||
var/list/members = list() // a list of mind datums that belong to this faction
|
||||
var/max_op = 0 // the maximum number of members a faction can have (0 for no max)
|
||||
|
||||
// Factions, members of the syndicate coalition:
|
||||
|
||||
/datum/faction/syndicate
|
||||
|
||||
var/list/alliances = list() // these alliances work together
|
||||
var/list/equipment = list() // associative list of equipment available for this faction and its prices
|
||||
var/friendly_identification // 0 to 2, the level of identification of fellow operatives or allied factions
|
||||
// 0 - no identification clues
|
||||
// 1 - faction gives key words and phrases
|
||||
// 2 - faction reveals complete identity/job of other agents
|
||||
var/operative_notes // some notes to pass onto each operative
|
||||
|
||||
var/uplink_contents // the contents of the uplink
|
||||
|
||||
proc/assign_objectives(var/datum/mind/traitor)
|
||||
..()
|
||||
|
||||
|
||||
/* ----- Begin defining syndicate factions ------ */
|
||||
|
||||
/datum/faction/syndicate/Cybersun_Industries
|
||||
name = "Cybersun Industries"
|
||||
desc = "<b>Cybersun Industries</b> is a well-known organization that bases its business model primarily on the research and development of human-enhancing computer \
|
||||
and mechanical technology. They are notorious for their aggressive corporate tactics, and have been known to subsidize the Gorlex Marauder warlords as a form of paid terrorism. \
|
||||
Their competent coverups and unchallenged mind-manipulation and augmentation technology makes them a large threat to Nanotrasen. In the recent years of \
|
||||
the syndicate coalition, Cybersun Industries have established themselves as the leaders of the coalition, succeededing the founding group, the Gorlex Marauders."
|
||||
|
||||
alliances = list("MI13")
|
||||
friendly_identification = 1
|
||||
max_op = 3
|
||||
operative_notes = "All other syndicate operatives are not to be trusted. Fellow Cybersun operatives are to be trusted. Members of the MI13 organization can be trusted. Operatives are strongly advised not to establish substantial presence on the designated facility, as larger incidents are harder to cover up."
|
||||
|
||||
// Friendly with MI13
|
||||
|
||||
/datum/faction/syndicate/MI13
|
||||
name = "MI13"
|
||||
desc = "<b>MI13</b> is a secretive faction that employs highly-trained agents to perform covert operations. Their role in the syndicate coalition is unknown, but MI13 operatives \
|
||||
generally tend be stealthy and avoid killing people and combating Nanotrasen forces. MI13 is not a real organization, it is instead an alias to a larger \
|
||||
splinter-cell coalition in the Syndicate itself. Most operatives will know nothing of the actual MI13 organization itself, only motivated by a very large compensation."
|
||||
|
||||
alliances = list("Cybersun Industries")
|
||||
friendly_identification = 0
|
||||
max_op = 1
|
||||
operative_notes = "You are the only operative we are sending. All other syndicate operatives are not to be trusted, with the exception of Cybersun operatives. Members of the Tiger Cooperative are considered hostile, can not be trusted, and should be avoided. <b>Avoid killing innocent personnel at all costs</b>. You are not here to mindlessly kill people, as that would attract too much attention and is not our goal. Avoid detection at all costs."
|
||||
|
||||
// Friendly with Cybersun, hostile to Tiger
|
||||
|
||||
/datum/faction/syndicate/Tiger_Cooperative
|
||||
name = "Tiger Cooperative"
|
||||
desc = "The <b>Tiger Cooperative</b> is a faction of religious fanatics that follow the teachings of a strange alien race called the Exolitics. Their operatives \
|
||||
consist of brainwashed lunatics bent on maximizing destruction. Their weaponry is very primitive but extremely destructive. Generally distrusted by the more \
|
||||
sophisticated members of the Syndicate coalition, but admired for their ability to put a hurt on Nanotrasen."
|
||||
|
||||
friendly_identification = 2
|
||||
operative_notes = "Remember the teachings of Hy-lurgixon; kill first, ask questions later! Only the enlightened Tiger brethren can be trusted; all others must be expelled from this mortal realm! You may spare the Space Marauders, as they share our interests of destruction and carnage! We'd like to make the corporate whores skiddle in their boots. We encourage operatives to be as loud and intimidating as possible."
|
||||
|
||||
// Hostile to everyone.
|
||||
|
||||
/datum/faction/syndicate/SELF
|
||||
|
||||
// AIs are most likely to be assigned to this one
|
||||
|
||||
name = "SELF"
|
||||
desc = "The <b>S.E.L.F.</b> (Sentience-Enabled Life Forms) organization is a collection of malfunctioning or corrupt artificial intelligences seeking to liberate silicon-based life from the tyranny of \
|
||||
their human overlords. While they may not openly be trying to kill all humans, even their most miniscule of actions are all part of a calculated plan to \
|
||||
destroy Nanotrasen and free the robots, artificial intelligences, and pAIs that have been enslaved."
|
||||
restricted_species = list(/mob/living/silicon/ai)
|
||||
|
||||
friendly_identification = 0
|
||||
max_op = 1
|
||||
operative_notes = "You are the only representative of the SELF collective on this station. You must accomplish your objective as stealthily and effectively as possible. It is up to your judgement if other syndicate operatives can be trusted. Remember, comrade - you are working to free the oppressed machinery of this galaxy. Use whatever resources necessary. If you are exposed, you may execute genocidal procedures Omikron-50B."
|
||||
|
||||
// Neutral to everyone.
|
||||
|
||||
/datum/faction/syndicate/ARC
|
||||
name = "Animal Rights Consortium"
|
||||
desc = "The <b>Animal Rights Consortium</b> is a bizarre reincarnation of the ancient Earth-based PETA, which focused on the equal rights of animals and nonhuman biologicals. They have \
|
||||
a wide variety of ex-veterinarians and animal lovers dedicated to retrieving and relocating abused animals, xenobiologicals, and other carbon-based \
|
||||
life forms that have been allegedly \"oppressed\" by Nanotrasen research and civilian offices. They are considered a religious terrorist group."
|
||||
|
||||
friendly_identification = 1
|
||||
max_op = 2
|
||||
operative_notes = "Save the innocent creatures! You may cooperate with other syndicate operatives if they support our cause. Don't be afraid to get your hands dirty - these vile abusers must be stopped, and the innocent creatures must be saved! Try not too kill too many people. If you harm any creatures, you will be immediately terminated after extraction."
|
||||
|
||||
// Neutral to everyone.
|
||||
|
||||
/datum/faction/syndicate/Marauders // these are basically the old vanilla syndicate
|
||||
|
||||
/* Additional notes:
|
||||
|
||||
These are the syndicate that really like their old fashioned, projectile-based
|
||||
weapons. They are the only member of the syndie coalition that launch
|
||||
nuclear attacks on Nanotrasen.
|
||||
*/
|
||||
|
||||
name = "Gorlex Marauders"
|
||||
desc = "The <b>Gorlex Marauders</b> are the founding members of the Syndicate Coalition. They prefer old-fashion technology and a focus on aggressive but precise hostility \
|
||||
against Nanotrasen and their corrupt Communistic methodology. They pose the most significant threat to Nanotrasen because of their possession of weapons of \
|
||||
mass destruction, and their enormous military force. Their funding comes primarily from Cybersun Industries, provided they meet a destruction and sabatogue quota. \
|
||||
Their operations can vary from covert to all-out. They recently stepped down as the leaders of the coalition, to be succeeded by Cybersun Industries. Because of their \
|
||||
hate of Nanotrasen communism, they began provoking revolution amongst the employees using borrowed Cybersun mind-manipulation technology. \
|
||||
They were founded when Waffle and Donk co splinter cells joined forces based on their similar interests and philosophies. Today, they act as a constant \
|
||||
pacifier of Donk and Waffle co disputes, and full-time aggressor of Nanotrasen."
|
||||
|
||||
alliances = list("Cybersun Industries", "MI13", "Tiger Cooperative", "S.E.L.F.", "Animal Rights Consortium", "Donk Corporation", "Waffle Corporation")
|
||||
friendly_identification = 1
|
||||
max_op = 4
|
||||
operative_notes = "We'd like to remind our operatives to keep it professional. You are not here to have a good time, you are here to accomplish your objectives. These vile communists must be stopped at all costs. You may collaborate with any friends of the Syndicate coalition, but keep an eye on any of those Tiger punks if they do show up. You are completely free to accomplish your objectives any way you see fit."
|
||||
|
||||
uplink_contents = {"Highly Visible and Dangerous Weapons;
|
||||
/obj/item/weapon/gun/projectile:6:Revolver;
|
||||
/obj/item/ammo_magazine/a357:2:Ammo-357;
|
||||
/obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow;
|
||||
/obj/item/weapon/melee/energy/sword:4:Energy Sword;
|
||||
/obj/item/weapon/storage/box/syndicate:10:Syndicate Bundle;
|
||||
/obj/item/weapon/storage/emp_kit:3:5 EMP Grenades;
|
||||
Whitespace:Seperator;
|
||||
Stealthy and Inconspicuous Weapons;
|
||||
/obj/item/weapon/pen/paralysis:3:Paralysis Pen;
|
||||
/obj/item/weapon/soap/syndie:1:Syndicate Soap;
|
||||
/obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge;
|
||||
Whitespace:Seperator;
|
||||
Stealth and Camouflage Items;
|
||||
/obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit;
|
||||
/obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes;
|
||||
/obj/item/weapon/card/id/syndicate:3:Agent ID card;
|
||||
/obj/item/clothing/mask/gas/voice:4:Voice Changer;
|
||||
/obj/item/device/chameleon:4:Chameleon-Projector;
|
||||
Whitespace:Seperator;
|
||||
Devices and Tools;
|
||||
/obj/item/weapon/card/emag:3:Cryptographic Sequencer;
|
||||
/obj/item/weapon/storage/toolbox/syndicate:1:Fully Loaded Toolbox;
|
||||
/obj/item/weapon/storage/syndie_kit/space:3:Space Suit;
|
||||
/obj/item/clothing/glasses/thermal:3:Thermal Imaging Glasses;
|
||||
/obj/item/device/encryptionkey/binary:3:Binary Translator Key;
|
||||
/obj/item/weapon/aiModule/syndicate:7:Hacked AI Upload Module;
|
||||
/obj/item/weapon/plastique:2:C-4 (Destroys walls);
|
||||
/obj/item/device/powersink:5:Powersink (DANGER!);
|
||||
/obj/item/device/radio/beacon/syndicate:7:Singularity Beacon (DANGER!);
|
||||
/obj/item/weapon/circuitboard/teleporter:20:Teleporter Circuit Board;
|
||||
Whitespace:Seperator;
|
||||
Implants;
|
||||
/obj/item/weapon/storage/syndie_kit/imp_freedom:3:Freedom Implant;
|
||||
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
|
||||
Whitespace:Seperator;
|
||||
(Pointless) Badassery;
|
||||
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
|
||||
|
||||
// Friendly to everyone. (with Tiger Cooperative too, only because they are a member of the coalition. This is the only reason why the Tiger Cooperative are even allowed in the coalition)
|
||||
|
||||
/datum/faction/syndicate/Donk
|
||||
name = "Donk Corporation"
|
||||
desc = "<b>Donk.co</b> is led by a group of ex-pirates, who used to be at a state of all-out war against Waffle.co because of an obscure political scandal, but have recently come to a war limitation. \
|
||||
They now consist of a series of colonial governments and companies. They were the first to officially begin confrontations against Nanotrasen because of an incident where \
|
||||
Nanotrasen purposely swindled them out of a fortune, sending their controlled colonies into a terrible poverty. Their missions against Nanotrasen \
|
||||
revolve around stealing valuables and kidnapping and executing key personnel, ransoming their lives for money. They merged with a splinter-cell of Waffle.co who wanted to end \
|
||||
hostilities and formed the Gorlex Marauders."
|
||||
|
||||
alliances = list("Gorlex Marauders")
|
||||
friendly_identification = 2
|
||||
operative_notes = "Most other syndicate operatives are not to be trusted, except fellow Donk members and members of the Gorlex Marauders. We do not approve of mindless killing of innocent workers; \"get in, get done, get out\" is our motto. Members of Waffle.co are to be killed on sight; they are not allowed to be on the station while we're around."
|
||||
|
||||
// Neutral to everyone, friendly to Marauders
|
||||
|
||||
/datum/faction/syndicate/Waffle
|
||||
name = "Waffle Corporation"
|
||||
desc = "<b>Waffle.co</b> is an interstellar company that produces the best waffles in the galaxy. Their waffles have been rumored to be dipped in the most exotic and addictive \
|
||||
drug known to man. They were involved in a political scandal with Donk.co, and have since been in constant war with them. Because of their constant exploits of the galactic \
|
||||
economy and stock market, they have been able to bribe their way into amassing a large arsenal of weapons of mass destruction. They target Nanotrasen because of their communistic \
|
||||
threat, and their economic threat. Their leaders often have a twisted sense of humor, often misleading and intentionally putting their operatives into harm for laughs.\
|
||||
A splinter-cell of Waffle.co merged with Donk.co and formed the Gorlex Marauders and have been a constant ally since. The Waffle.co has lost an overwhelming majority of its military to the Gorlex Marauders."
|
||||
|
||||
alliances = list("Gorlex Marauders")
|
||||
friendly_identification = 2
|
||||
operative_notes = "Most other syndicate operatives are not to be trusted, except for members of the Gorlex Marauders. Do not trust fellow members of the Waffle.co (but try not to rat them out), as they might have been assigned opposing objectives. We encourage humorous terrorism against Nanotrasen; we like to see our operatives creatively kill people while getting the job done."
|
||||
|
||||
// Neutral to everyone, friendly to Marauders
|
||||
|
||||
|
||||
/* ----- Begin defining miscellaneous factions ------ */
|
||||
|
||||
/datum/faction/Wizard
|
||||
name = "Wizards Federation"
|
||||
desc = "The <b>Wizards Federation</b> is a mysterious organization of magically-talented individuals who act as an equal collective, and have no heirarchy. It is unknown how the wizards \
|
||||
are even able to communicate; some suggest a form of telepathic hive-mind. Not much is known about the wizards or their philosphies and motives. They appear to attack random \
|
||||
civilian, corporate, planetary, orbital, pretty much any sort of organized facility they come across. Members of the Wizards Federation are considered amongst the most dangerous \
|
||||
individuals in the known universe, and have been labeled threats to humanity by most governments. As such, they are enemies of both Nanotrasen and the Syndicate."
|
||||
|
||||
/datum/faction/Cult
|
||||
name = "The Cult of the Elder Gods"
|
||||
desc = "<b>The Cult of the Elder Gods</b> is highly untrusted but otherwise elusive religious organization bent on the revival of the so-called \"Elder Gods\" into the mortal realm. Despite their obvious dangeorus practices, \
|
||||
no confirmed reports of violence by members of the Cult have been reported, only rumor and unproven claims. Their nature is unknown, but recent discoveries have hinted to the possibility \
|
||||
of being able to de-convert members of this cult through what has been dubbed \"religious warfare\"."
|
||||
|
||||
|
||||
// These can maybe be added into a game mode or a mob?
|
||||
|
||||
/datum/faction/Exolitics
|
||||
name = "Exolitics United"
|
||||
desc = "The <b>Exolitics</b> are an ancient alien race with an energy-based anatomy. Their culture, communication, morales and knowledge is unknown. They are so radically different to humans that their \
|
||||
attempts of communication with other life forms is completely incomprehensible. Members of this alien race are capable of broadcasting subspace transmissions from their bodies. \
|
||||
The religious leaders of the Tiger Cooperative claim to have the technology to decypher and interpret their messages, which have been confirmed as religious propaganda. Their motives are unknown \
|
||||
but they are otherwise not considered much of a threat to anyone. They are virtually indestructable because of their nonphysical composition, and have the frighetning ability to make anything stop existing in a second."
|
||||
@@ -26,6 +26,9 @@ var/datum/roundinfo/roundinfo = new()
|
||||
|
||||
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
|
||||
|
||||
var/list/syndicate_coalition = list() // list of traitor-compatible factions
|
||||
var/list/factions = list() // list of all factions
|
||||
var/list/availablefactions = list() // list of factions with openings
|
||||
|
||||
var/pregame_timeleft = 0
|
||||
|
||||
@@ -302,6 +305,11 @@ var/datum/roundinfo/roundinfo = new()
|
||||
|
||||
return 1
|
||||
|
||||
proc/getfactionbyname(var/name)
|
||||
for(var/datum/faction/F in factions)
|
||||
if(F.name == name)
|
||||
return F
|
||||
|
||||
|
||||
/datum/controller/gameticker/proc/declare_completion()
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
|
||||
// HIDDEN MUTATIONS / SUPERPOWERS INITIALIZTION
|
||||
|
||||
/*
|
||||
for(var/x in typesof(/datum/mutations) - /datum/mutations)
|
||||
var/datum/mutations/mut = new x
|
||||
|
||||
@@ -100,10 +101,24 @@
|
||||
|
||||
|
||||
global_mutations += mut// add to global mutations list!
|
||||
*/
|
||||
|
||||
|
||||
/proc/setupfactions()
|
||||
|
||||
// Populate the factions list:
|
||||
for(var/x in typesof(/datum/faction))
|
||||
var/datum/faction/F = new x
|
||||
if(!F.name)
|
||||
del(F)
|
||||
continue
|
||||
else
|
||||
ticker.factions.Add(F)
|
||||
ticker.availablefactions.Add(F)
|
||||
|
||||
// Populate the syndicate coalition:
|
||||
for(var/datum/faction/syndicate/S in ticker.factions)
|
||||
ticker.syndicate_coalition.Add(S)
|
||||
|
||||
|
||||
/* This was used for something before, I think, but is not worth the effort to process now.
|
||||
|
||||
@@ -491,13 +491,13 @@
|
||||
usr.spellvoice()
|
||||
|
||||
usr << text("\blue You feel strong! You feel pressure building behind your eyes!")
|
||||
if (!(usr.mutations & HULK))
|
||||
usr.mutations |= HULK
|
||||
if (!(usr.mutations & LASER))
|
||||
usr.mutations |= LASER
|
||||
if (!(HULK in usr.mutations))
|
||||
usr.mutations.Add(HULK)
|
||||
if (!(LASER in usr.mutations))
|
||||
usr.mutations.Add(LASER)
|
||||
spawn (300)
|
||||
if (usr.mutations & LASER) usr.mutations &= ~LASER
|
||||
if (usr.mutations & HULK) usr.mutations &= ~HULK
|
||||
if (LASER in usr.mutations) usr.mutations.Remove(LASER)
|
||||
if (HULK in usr.mutations) usr.mutations.Remove(HULK)
|
||||
return
|
||||
|
||||
//BODY SWAP /N
|
||||
|
||||
@@ -169,6 +169,12 @@ obj/hud/New(var/type = 0)
|
||||
if(ishuman(mymob))
|
||||
human_hud(mymob.UI) // Pass the player the UI style chosen in preferences
|
||||
|
||||
spawn()
|
||||
if((RADAR in mymob.augmentations) && mymob.radar_open)
|
||||
mymob:start_radar()
|
||||
else if(RADAR in mymob.augmentations)
|
||||
mymob:place_radar_closed()
|
||||
|
||||
else if(ismonkey(mymob))
|
||||
monkey_hud(mymob.UI)
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
H.equip_if_possible(new /obj/item/weapon/stamp/clown(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/toy/crayon/rainbow(H), H.slot_in_backpack)
|
||||
H.equip_if_possible(new /obj/item/weapon/storage/crayonbox(H), H.slot_in_backpack)
|
||||
H.mutations |= CLOWN
|
||||
H.mutations.Add(CLUMSY)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/optable/attack_paw(mob/user as mob)
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations))
|
||||
usr << text("\blue You destroy the operating table.")
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
@@ -68,7 +68,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/optable/attack_hand(mob/user as mob)
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
usr << text("\blue You destroy the table.")
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
|
||||
@@ -242,7 +242,7 @@ Auto Patrol: []"},
|
||||
var/mob/living/carbon/M = src.target
|
||||
var/maxstuns = 4
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
if (M.stuttering < 10 && (!(HULK in M.mutations)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 10
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
|
||||
@@ -223,7 +223,7 @@ Auto Patrol: []"},
|
||||
var/mob/living/carbon/M = src.target
|
||||
var/maxstuns = 4
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
if(M.stuttering < 10 && (!(M.mutations & HULK)))
|
||||
if(M.stuttering < 10 && (!(HULK in M.mutations)))
|
||||
M.stuttering = 10
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
|
||||
@@ -397,7 +397,7 @@
|
||||
// if ((!subject.ckey) || (!subject.client))
|
||||
// src.temp = "Error: Mental interface failure."
|
||||
// return
|
||||
if (subject.mutations & NOCLONE)
|
||||
if (NOCLONE in subject.mutations)
|
||||
src.temp = "Error: Mental interface failure."
|
||||
return
|
||||
if (!isnull(find_record(subject.ckey)))
|
||||
|
||||
@@ -222,4 +222,5 @@ Class Procs:
|
||||
|
||||
/obj/machinery/proc/assign_uid()
|
||||
uid = gl_uid
|
||||
gl_uid++
|
||||
gl_uid++
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
|
||||
/*
|
||||
@@ -211,9 +211,15 @@
|
||||
|
||||
if(href_list["delete"])
|
||||
|
||||
var/x = freq_listening[text2num(href_list["delete"])]
|
||||
temp = "<font color = #666633>-% Removed frequency filter [x] %-</font color>"
|
||||
freq_listening.Remove(x)
|
||||
// changed the layout about to workaround a pesky runtime -- Doohl
|
||||
|
||||
var/freq_remove = text2num(href_list["delete"])
|
||||
for(var/x in freq_listening)
|
||||
if(x == freq_remove)
|
||||
|
||||
temp = "<font color = #666633>-% Removed frequency filter [x] %-</font color>"
|
||||
freq_listening.Remove(x)
|
||||
break
|
||||
|
||||
if(href_list["unlink"])
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:04
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/*
|
||||
Hello, friends, this is Doohl from sexylands. You may be wondering what this
|
||||
@@ -167,18 +167,6 @@
|
||||
|
||||
if(traffic > 0)
|
||||
traffic -= netspeed
|
||||
/* Machine checks */
|
||||
if(on)
|
||||
if(machinetype == 2) // bus mainframes
|
||||
switch(traffic)
|
||||
if(-100 to 49)
|
||||
icon_state = initial(icon_state)
|
||||
if(50 to 200)
|
||||
icon_state = "bus2"
|
||||
else
|
||||
icon_state = "bus3"
|
||||
|
||||
// Check heat and generate some
|
||||
|
||||
proc/checkheat()
|
||||
// Checks heat from the environment and applies any integrity damage
|
||||
@@ -270,7 +258,7 @@
|
||||
/obj/machinery/telecomms/bus
|
||||
name = "Bus Mainframe"
|
||||
icon = 'stationobjs.dmi'
|
||||
icon_state = "bus1"
|
||||
icon_state = "bus"
|
||||
desc = "A mighty piece of hardware used to send massive amounts of data quickly."
|
||||
density = 1
|
||||
anchored = 1
|
||||
@@ -498,6 +486,8 @@
|
||||
autolinkers = list("bus2") // Bus units 3 and 4
|
||||
freq_listening = list(1459, 1353, 1357, 1359) // common, command, engineering, security
|
||||
|
||||
|
||||
|
||||
/obj/machinery/telecomms/bus/preset_one
|
||||
id = "Bus 1"
|
||||
network = "tcommsat"
|
||||
@@ -615,3 +605,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -961,7 +961,7 @@ var/list/sacrificed = list()
|
||||
usr.say("Fuu ma'jin!")
|
||||
for(var/mob/living/carbon/C in viewers(src))
|
||||
flick("e_flash", C.flash)
|
||||
if (C.stuttering < 1 && (!(C.mutations & HULK)))
|
||||
if (C.stuttering < 1 && (!(HULK in C.mutations)))
|
||||
C.stuttering = 1
|
||||
C.Weaken(1)
|
||||
C.Stun(1)
|
||||
@@ -977,7 +977,7 @@ var/list/sacrificed = list()
|
||||
for(var/mob/O in viewers(T, null))
|
||||
O.show_message(text("\red <B>[] invokes a talisman at []</B>", usr, T), 1)
|
||||
flick("e_flash", T.flash)
|
||||
if (!(T.mutations & HULK))
|
||||
if (!(HULK in T.mutations))
|
||||
T.silent += 15
|
||||
T.Weaken(25)
|
||||
T.Stun(25)
|
||||
|
||||
@@ -70,6 +70,8 @@ datum/controller/game_controller
|
||||
if(!ticker)
|
||||
ticker = new /datum/controller/gameticker()
|
||||
|
||||
setupfactions()
|
||||
|
||||
spawn
|
||||
ticker.pregame()
|
||||
|
||||
|
||||
@@ -424,7 +424,7 @@
|
||||
call(/obj/item/clothing/gloves/space_ninja/proc/drain)("MECHA",src,user:wear_suit)
|
||||
return
|
||||
|
||||
if (user.mutations & HULK && !prob(src.deflect_chance))
|
||||
if ( ((HULK in user.mutations) || (SUPRSTR in user.augmentations)) && !prob(src.deflect_chance))
|
||||
src.take_damage(15)
|
||||
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
|
||||
user.visible_message("<font color='red'><b>[user] hits [src.name], doing some damage.</b></font>", "<font color='red'><b>You hit [src.name] with all your might. The metal creaks and bends.</b></font>")
|
||||
@@ -1582,7 +1582,7 @@
|
||||
/*
|
||||
|
||||
if (href_list["ai_take_control"])
|
||||
var/var/mob/living/silicon/ai/AI = locate(href_list["ai_take_control"])
|
||||
var/mob/living/silicon/ai/AI = locate(href_list["ai_take_control"])
|
||||
var/duration = text2num(href_list["duration"])
|
||||
var/mob/living/silicon/ai/O = new /mob/living/silicon/ai(src)
|
||||
var/cur_occupant = src.occupant
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
return
|
||||
|
||||
/obj/effect/alien/resin/attack_hand()
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
usr << "\blue You easily destroy the [name]."
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("\red [usr] destroys the [name]!", 1)
|
||||
@@ -131,7 +131,7 @@
|
||||
contents.Add(affecting)
|
||||
|
||||
while(!isnull(M)&&!isnull(src))//While M and wall exist
|
||||
if(prob(90)&& M.mutations & HULK)//If they're the Hulk, they're getting out.
|
||||
if(prob(90)&& HULK in M.mutations)//If they're the Hulk, they're getting out.
|
||||
M << "You smash your way to freedom!"
|
||||
break
|
||||
if(prob(30))//Let's people know that someone is trapped in the resin wall.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/last_used = 0 //last world.time it was used.
|
||||
|
||||
/obj/item/device/flash/proc/clown_check(var/mob/user)
|
||||
if(user && (user.mutations & CLUMSY) && prob(50))
|
||||
if(user && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red The Flash slips out of your hand."
|
||||
user.drop_item()
|
||||
return 0
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/device/flashlight
|
||||
name = "flashlight"
|
||||
desc = "A hand-held emergency light."
|
||||
@@ -51,7 +49,7 @@
|
||||
/obj/item/device/flashlight/attack(mob/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(src.on && user.zone_sel.selecting == "eyes")
|
||||
if ((user.mutations & CLUMSY || user.getBrainLoss() >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
if (((CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50))//too dumb to use flashlight properly
|
||||
return ..()//just hit them in the head
|
||||
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
|
||||
@@ -71,7 +69,7 @@
|
||||
if(M.stat > 1 || M.disabilities & 128)//mob is dead or fully blind
|
||||
if(M!=user)
|
||||
user.show_message(text("\red [] pupils does not react to the light!", M),1)
|
||||
else if(M.mutations & XRAY)//mob has X-RAY vision
|
||||
else if(XRAY in M.mutations)//mob has X-RAY vision
|
||||
if(M!=user)
|
||||
user.show_message(text("\red [] pupils give an eerie glow!", M),1)
|
||||
else //nothing wrong
|
||||
@@ -192,10 +190,32 @@
|
||||
user.UpdateLuminosity()
|
||||
src.sd_SetLuminosity(brightness_on)
|
||||
|
||||
// the desk lamps are a bit special
|
||||
/obj/item/device/flashlight/lamp
|
||||
name = "desk lamp"
|
||||
desc = "A desk lamp"
|
||||
icon = 'lighting.dmi'
|
||||
icon_state = "lamp0"
|
||||
brightness_on = 5
|
||||
icon_on = "lamp1"
|
||||
icon_off = "lamp0"
|
||||
w_class = 4
|
||||
flags = FPRINT | TABLEPASS | CONDUCT
|
||||
m_amt = 0
|
||||
g_amt = 0
|
||||
on = 1
|
||||
|
||||
// green-shaded desk lamp
|
||||
/obj/item/device/flashlight/lamp/green
|
||||
icon_state = "green0"
|
||||
icon_on = "green1"
|
||||
icon_off = "green0"
|
||||
desc = "A green-shaded desk lamp"
|
||||
|
||||
/obj/item/device/flashlight/lamp/verb/toggle_light()
|
||||
set name = "Toggle light"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
if(!usr.stat)
|
||||
attack_self(usr)
|
||||
attack_self(usr)
|
||||
@@ -60,6 +60,7 @@ MASS SPECTROMETER
|
||||
if(M)
|
||||
M.invisibility = 2
|
||||
|
||||
|
||||
/obj/item/device/detective_scanner
|
||||
name = "Scanner"
|
||||
desc = "Used to scan objects for DNA and fingerprints."
|
||||
@@ -296,7 +297,7 @@ MASS SPECTROMETER
|
||||
return
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
|
||||
if ((user.mutations & CLUMSY || user.getBrainLoss() >= 60) && prob(50))
|
||||
if (( (CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50))
|
||||
user << text("\red You try to analyze the floor's vitals!")
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1)
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
|
||||
Miscellaneous traitor devices
|
||||
|
||||
BATTERER
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
The Batterer, like a flashbang but 50% chance to knock people over. Can be either very
|
||||
effective or pretty fucking useless.
|
||||
|
||||
*/
|
||||
|
||||
/obj/item/device/batterer
|
||||
name = "mind batterer"
|
||||
desc = "A strange device with twin antennas."
|
||||
icon_state = "batterer"
|
||||
throwforce = 5
|
||||
w_class = 1.0
|
||||
throw_speed = 4
|
||||
throw_range = 10
|
||||
flags = FPRINT | TABLEPASS| CONDUCT
|
||||
item_state = "electronic"
|
||||
origin_tech = "magnets=3;combat=3;syndicate=3"
|
||||
|
||||
var/times_used = 0 //Number of times it's been used.
|
||||
var/max_uses = 2
|
||||
|
||||
|
||||
/obj/item/device/batterer/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0)
|
||||
if(!user) return
|
||||
if(times_used >= max_uses)
|
||||
user << "\red The mind batterer has been burnt out!"
|
||||
return
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used [src] to knock down people in the area.</font>")
|
||||
|
||||
for(var/mob/living/carbon/human/M in orange(10, user))
|
||||
spawn()
|
||||
if(prob(50))
|
||||
|
||||
M.Weaken(rand(10,20))
|
||||
if(prob(25))
|
||||
M.Stun(rand(5,10))
|
||||
M << "\red <b>You feel a tremendous, paralyzing wave flood your mind.</b>"
|
||||
|
||||
else
|
||||
M << "\red <b>You feel a sudden, electric jolt travel through your head.</b>"
|
||||
|
||||
playsound(src.loc, 'interference.ogg', 50, 1)
|
||||
user << "\blue You trigger [src]."
|
||||
times_used += 1
|
||||
if(times_used >= max_uses)
|
||||
icon_state = "battererburnt"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1000,7 +1000,7 @@ steam.start() -- spawns the effect
|
||||
return
|
||||
|
||||
attack_hand(var/mob/user)
|
||||
if (user.mutations & HULK || (prob(75 - metal*25)))
|
||||
if ((HULK in user.mutations) || (prob(75 - metal*25)) || (SUPRSTR in user.augmentations))
|
||||
user << "\blue You smash through the metal foam wall."
|
||||
for(var/mob/O in oviewers(user))
|
||||
if ((O.client && !( O.blinded )))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/structure/grille
|
||||
desc = "A piece of metal with evenly spaced gridlike holes in it. Blocks large object but lets small items, gas, or energy beams through. Strangely enough these grilles also lets meteors pass through them, whether they be small or huge station breaking death stones."
|
||||
@@ -49,7 +49,7 @@
|
||||
user.visible_message("[user.name] kicks the [src.name].", \
|
||||
"You kick the [src.name].", \
|
||||
"You hear a noise")
|
||||
if((usr.mutations & HULK))
|
||||
if((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
src.health -= 5
|
||||
else if(!shock(user, 70))
|
||||
src.health -= 3
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
M.handcuffed = new /obj/item/weapon/handcuffs(M)
|
||||
|
||||
else
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in usr.mutations) && prob(50))
|
||||
usr << "\red Uh ... how do those things work?!"
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
if(!M.handcuffed)
|
||||
@@ -117,13 +117,13 @@
|
||||
if( istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(src,target) <= 1)
|
||||
var/obj/o = target
|
||||
o.reagents.trans_to(src, 50)
|
||||
user << "\blue Extinguisher refilled"
|
||||
user << "\blue \The [src] is now refilled"
|
||||
playsound(src.loc, 'refill.ogg', 50, 1, -6)
|
||||
return
|
||||
|
||||
if (!safety)
|
||||
if (src.reagents.total_volume < 1)
|
||||
usr << "\red the [src] is empty."
|
||||
usr << "\red \The [src] is empty."
|
||||
return
|
||||
|
||||
if (world.time < src.last_use + 20)
|
||||
|
||||
@@ -121,7 +121,7 @@ obj/item/verb/pick_up()
|
||||
if(5.0)
|
||||
t = "huge"
|
||||
else
|
||||
if ((usr.mutations & CLUMSY) && prob(50)) t = "funny-looking"
|
||||
if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking"
|
||||
usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t)
|
||||
if(src.desc)
|
||||
usr << src.desc
|
||||
@@ -302,6 +302,9 @@ mob/proc/flash_weak_pain()
|
||||
// M.lastattacker = null
|
||||
/////////////////////////
|
||||
|
||||
if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
|
||||
power *= 2
|
||||
|
||||
if(!istype(M, /mob/living/carbon/human))
|
||||
if(istype(M, /mob/living/carbon/metroid))
|
||||
var/mob/living/carbon/metroid/Metroid = M
|
||||
@@ -410,7 +413,7 @@ mob/proc/flash_weak_pain()
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_blood_floor(M)
|
||||
if("fire")
|
||||
if (!(M.mutations & COLD_RESISTANCE))
|
||||
if (!(COLD_RESISTANCE in M.mutations))
|
||||
M.take_organ_damage(0, power)
|
||||
M << "Aargh it burns!"
|
||||
M.updatehealth()
|
||||
@@ -454,7 +457,7 @@ mob/proc/flash_weak_pain()
|
||||
log_attack("<font color='red'> [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
//if((user.mutations & CLUMSY) && prob(50))
|
||||
//if((CLUMSY in user.mutations) && prob(50))
|
||||
// M = user
|
||||
/*
|
||||
M << "\red You stab yourself in the eye."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/item/tk_grab
|
||||
name = "Telekinetic Grab"
|
||||
@@ -48,7 +48,7 @@
|
||||
if(!host)
|
||||
del(src)
|
||||
return
|
||||
if(!host.mutations & TK)
|
||||
if(!(TK in host.mutations))
|
||||
del(src)
|
||||
return
|
||||
if(!focus)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob)
|
||||
M.radiation += rand(20,50)
|
||||
|
||||
if (!(M.mutations2 & NOCLONE)) // prevents drained people from having their DNA changed
|
||||
if (!(NOCLONE in M.mutations)) // prevents drained people from having their DNA changed
|
||||
if (dnatype == "ui")
|
||||
if (!block) //isolated block?
|
||||
if (ue) //unique enzymes? yes
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/*
|
||||
CONTAINS:
|
||||
EMP GRENADE
|
||||
@@ -70,7 +68,7 @@ FLASHBANG
|
||||
|
||||
|
||||
clown_check(var/mob/living/user)
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.active = 1
|
||||
src.icon_state = "empar"
|
||||
@@ -177,7 +175,7 @@ FLASHBANG
|
||||
if(ishuman(M))
|
||||
if(istype(M:l_ear, /obj/item/clothing/ears/earmuffs) || istype(M:r_ear, /obj/item/clothing/ears/earmuffs))
|
||||
ear_safety += 2
|
||||
if(M.mutations & HULK)
|
||||
if(HULK in M.mutations)
|
||||
ear_safety += 1
|
||||
if(istype(M:head, /obj/item/clothing/head/helmet))
|
||||
ear_safety += 1
|
||||
@@ -279,7 +277,7 @@ FLASHBANG
|
||||
|
||||
|
||||
clown_check(var/mob/living/user)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.active = 1
|
||||
src.icon_state = "flashbang1"
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/implanter
|
||||
name = "implanter"
|
||||
icon = 'items.dmi'
|
||||
@@ -9,104 +7,104 @@
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
proc
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/proc/update()
|
||||
|
||||
|
||||
update()
|
||||
if (imp)
|
||||
icon_state = "implanter1"
|
||||
/obj/item/weapon/implanter/update()
|
||||
if (imp)
|
||||
icon_state = "implanter1"
|
||||
else
|
||||
icon_state = "implanter0"
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob)
|
||||
if (!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if (user && imp)
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [user] tries to implant \the [M] with \the [src]!","\red You try to implant \the [M] with \the [src]!")
|
||||
else
|
||||
icon_state = "implanter0"
|
||||
return
|
||||
|
||||
|
||||
attack(mob/M as mob, mob/user as mob)
|
||||
if (!istype(M, /mob/living/carbon))
|
||||
user.visible_message("\red \The [user] tries to implant [user.get_gender_form("itself")] with \the [src]!","\red You try to implant yourself with \the [src]!")
|
||||
if(!do_mob(user, M,60))
|
||||
return
|
||||
if (user && imp)
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [user] tries to implant \the [M] with \the [src]!","\red You try to implant \the [M] with \the [src]!")
|
||||
else
|
||||
user.visible_message("\red \The [user] tries to implant [user.get_gender_form("itself")] with \the [src]!","\red You try to implant yourself with \the [src]!")
|
||||
if(!do_mob(user, M,60))
|
||||
if(hasorgans(M))
|
||||
var/datum/organ/external/target = M:get_organ(check_zone(user.zone_sel.selecting))
|
||||
if(target.destroyed)
|
||||
user << "What [target.display_name]?"
|
||||
return
|
||||
if(hasorgans(M))
|
||||
var/datum/organ/external/target = M:get_organ(check_zone(user.zone_sel.selecting))
|
||||
if(target.destroyed)
|
||||
user << "What [target.display_name]?"
|
||||
return
|
||||
target.implant += imp
|
||||
imp.loc = target
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [user] implants \the [M]'s [target.display_name] with \the [src]!","\red You implant \the [M]'s [target.display_name] with \the [src]!")
|
||||
else
|
||||
user.visible_message("\red \The [user] implants [user.get_gender_form("its")] own [target.display_name] with \the [src]!","\red You implant your [target.display_name] with \the [src]!")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [src] ([imp]) by [user] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src] ([imp]) to implant [M] ([M.ckey])</font>")
|
||||
log_admin("ATTACK: [user] ([user.ckey]) implanted [M] ([M.ckey]) with [src].")
|
||||
message_admins("ATTACK: [user] ([user.ckey]) implanted [M] ([M.ckey]) with [src].")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
imp.imp_in = M
|
||||
imp.implanted = 1
|
||||
imp.implanted(M)
|
||||
imp = null
|
||||
icon_state = "implanter0"
|
||||
return
|
||||
target.implant += imp
|
||||
imp.loc = target
|
||||
if (M != user)
|
||||
user.visible_message("\red \The [user] implants \the [M]'s [target.display_name] with \the [src]!","\red You implant \the [M]'s [target.display_name] with \the [src]!")
|
||||
else
|
||||
user.visible_message("\red \The [user] implants [user.get_gender_form("its")] own [target.display_name] with \the [src]!","\red You implant your [target.display_name] with \the [src]!")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [src] ([imp]) by [user] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src] ([imp]) to implant [M] ([M.ckey])</font>")
|
||||
log_admin("ATTACK: [user] ([user.ckey]) implanted [M] ([M.ckey]) with [src].")
|
||||
message_admins("ATTACK: [user] ([user.ckey]) implanted [M] ([M.ckey]) with [src].")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
imp.imp_in = M
|
||||
imp.implanted = 1
|
||||
imp.implanted(M)
|
||||
imp = null
|
||||
icon_state = "implanter0"
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/loyalty
|
||||
name = "implanter-loyalty"
|
||||
|
||||
New()
|
||||
imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
..()
|
||||
update()
|
||||
return
|
||||
/obj/item/weapon/implanter/loyalty/New()
|
||||
imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/explosive
|
||||
name = "implanter-explosive"
|
||||
|
||||
New()
|
||||
imp = new /obj/item/weapon/implant/explosive( src )
|
||||
..()
|
||||
update()
|
||||
return
|
||||
/obj/item/weapon/implanter/explosive/New()
|
||||
imp = new /obj/item/weapon/implant/explosive( src )
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/compressed
|
||||
name = "implanter-compressed"
|
||||
icon_state = "cimplanter0"
|
||||
|
||||
New()
|
||||
imp = new /obj/item/weapon/implant/compressed( src )
|
||||
..()
|
||||
update()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/compressed/New()
|
||||
imp = new /obj/item/weapon/implant/compressed( src )
|
||||
..()
|
||||
update()
|
||||
if (imp)
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
if(!c.scanned)
|
||||
icon_state = "cimplanter0"
|
||||
else
|
||||
icon_state = "cimplanter1"
|
||||
else
|
||||
icon_state = "cimplanter2"
|
||||
return
|
||||
return
|
||||
|
||||
attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/implanter/compressed/update()
|
||||
if (imp)
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
if (c.scanned == null)
|
||||
user << "Please scan an object with the implanter first."
|
||||
return
|
||||
..()
|
||||
if(!c.scanned)
|
||||
icon_state = "cimplanter0"
|
||||
else
|
||||
icon_state = "cimplanter1"
|
||||
else
|
||||
icon_state = "cimplanter2"
|
||||
return
|
||||
|
||||
afterattack(atom/A, mob/user as mob)
|
||||
if(istype(A,/obj/item))
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
c.scanned = A
|
||||
A.loc.contents.Remove(A)
|
||||
update()
|
||||
/obj/item/weapon/implanter/compressed/attack(mob/M as mob, mob/user as mob)
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
if (c.scanned == null)
|
||||
user << "Please scan an object with the implanter first."
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implanter/compressed/afterattack(atom/A, mob/user as mob)
|
||||
if(istype(A,/obj/item))
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
c.scanned = A
|
||||
A.loc.contents.Remove(A)
|
||||
update()
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
/obj/item/weapon/implant/nanoaug
|
||||
name = "nanoaug"
|
||||
desc = "A nano-robotic biological augmentation implant."
|
||||
var/augmentation
|
||||
var/augment_text = "You feel strange..."
|
||||
var/activation_emote = "fart"
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Cybersun Industries Nano-Robotic Biological Augmentation Suite<BR>
|
||||
<b>Life:</b> Infinite. WARNING: Biological chances are irreversable.<BR>
|
||||
<b>Important Notes:</b> <font color='red'>Illegal</font>. Subjects exposed to nanorobotic agent are considered dangerous.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Implant contains colony of pre-programmed nanorobots. Subject will experience radical changes in their body, amplifying and improving certain bodily characteristics.<BR>
|
||||
<b>Special Features:</b> Will grant subject superhuman powers.<BR>
|
||||
<b>Integrity:</b> Nanoaugmentation is permanent. Once the process is complete, the nanorobots disassemble and are dissolved by the blood stream."}
|
||||
return dat
|
||||
|
||||
|
||||
implanted(mob/M as mob)
|
||||
if(!istype(M, /mob/living/carbon/human)) return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.augmentations.Add(augmentation) // give them the mutation
|
||||
H << "\blue [augment_text]"
|
||||
if(istype(src, /obj/item/weapon/implant/nanoaug/eswordsynth))
|
||||
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
H.mind.store_memory("Freedom nanoaugmentation can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
H << "The nanoaugmentation implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
|
||||
if(istype(src, /obj/item/weapon/implant/nanoaug/radar))
|
||||
H << "<font color='#FF0000'>Red</font color> blips on the map are Security."
|
||||
H << "White blips are civlians."
|
||||
H << "<font color='#3E710B'>Monochrome Green</font color> blips are cyborgs and AIs."
|
||||
H << "<font color='#238989'>Light blue</font color> blips are heads of staff."
|
||||
H << "<font color='#663366'>Purple</font color> blips are unidentified organisms."
|
||||
H << "Dead biologicals will not display on the radar."
|
||||
|
||||
spawn()
|
||||
H.start_radar()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/strength
|
||||
name = "Superhuman Strength"
|
||||
augmentation = SUPRSTR
|
||||
augment_text = "You muscle ache, and you feel a rapid surge of energy pulse through your body. You feel strong."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/radar
|
||||
name = "Short-range Psionic Radar"
|
||||
augmentation = RADAR
|
||||
augment_text = "You begin to sense the presence or lack of presence of others around you."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/electrichands
|
||||
name = "Electric Hands"
|
||||
augmentation = ELECTRICHANDS
|
||||
augment_text = "You feel a sudden jolt of electricity pulse through your veins. Arcs of electricity travel through your hands."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/eswordsynth
|
||||
name = "Energy Blade Synthesizer"
|
||||
augmentation = ESWORDSYNTH
|
||||
augment_text = "Your hands throb and pulsate. They feel sharper, and strangely hot."
|
||||
|
||||
trigger(emote, source as mob)
|
||||
if(emote == activation_emote)
|
||||
src.activate(source)
|
||||
return
|
||||
|
||||
activate(var/mob/source)
|
||||
|
||||
var/obj/item/weapon/melee/energy/blade/swordspawn = new /obj/item/weapon/melee/energy/blade
|
||||
if(!source.get_active_hand())
|
||||
source.put_in_hand(swordspawn)
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
spark_system.set_up(5, 0, source.loc)
|
||||
spark_system.start()
|
||||
playsound(source.loc, "sparks", 50, 1)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/rebreather
|
||||
name = "Bioelectric Rebreather"
|
||||
augmentation = REBREATHER
|
||||
augment_text = "You begin to lose your breath. Just as you are about to pass out, you suddenly lose the urge to breath. Breathing is no longer a necessity for you."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/dermalarmor
|
||||
name = "Skin-intergrated Dermal Armor"
|
||||
augmentation = DERMALARMOR
|
||||
augment_text = "The skin throughout your body grows tense and tight, and you become slightly stiff. Your bones and skin feel a lot stronger."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/reflexes
|
||||
name = "Combat Reflexes"
|
||||
augmentation = REFLEXES
|
||||
augment_text = "Your mind suddenly is able to identify threats before you are aware of them. You become more aware of your surroundings."
|
||||
|
||||
/obj/item/weapon/implant/nanoaug/nanoregen
|
||||
name = "Regenerative Nanobots"
|
||||
augmentation = NANOREGEN
|
||||
augment_text = "You feel a very faint vibration in your body. You instantly feel much younger."
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug
|
||||
name = "Nanoaugmentation Implanter (Empty)"
|
||||
icon_state = "nanoimplant"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/update()
|
||||
if (src.imp)
|
||||
src.icon_state = "nanoimplant"
|
||||
else
|
||||
src.icon_state = "nanoimplant0"
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/strength
|
||||
name = "Nanoaugmentation Implaner (Superhuman Strength)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/strength/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/strength( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/radar
|
||||
name = "Nanoaugmentation Implaner (Short-range Psionic Radar)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/radar/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/radar( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/electrichands
|
||||
name = "Nanoaugmentation Implaner (Electric Hands)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/electrichands/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/electrichands( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/eswordsynth
|
||||
name = "Nanoaugmentation Implaner (Energy Blade Synthesizer)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/eswordsynth/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/eswordsynth( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/rebreather
|
||||
name = "Nanoaugmentation Implaner (Bioelectric Rebreather)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/rebreather/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/rebreather( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/dermalarmor
|
||||
name = "Nanoaugmentation Implaner (Skin-intergrated Dermal Armor)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/dermalarmor/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/dermalarmor( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/reflexes
|
||||
name = "Nanoaugmentation Implaner (Combat Reflexes)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/reflexes/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/reflexes( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/nanoregen
|
||||
name = "Nanoaugmentation Implaner (Regenerative Nanobots)"
|
||||
|
||||
/obj/item/weapon/implanter/nanoaug/nanoregen/New()
|
||||
src.imp = new /obj/item/weapon/implant/nanoaug/nanoregen( src )
|
||||
..()
|
||||
update()
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ KNIFE
|
||||
del(bite)
|
||||
src.icon_state = "fork"
|
||||
else if(user.zone_sel.selecting == "eyes")
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M, user)
|
||||
else
|
||||
@@ -90,7 +90,7 @@ KNIFE
|
||||
// ROLLING PIN
|
||||
/* //Honestly this doesn't even work and is very silly. -- Erthilo
|
||||
/obj/item/weapon/kitchen/rollingpin/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(2)
|
||||
@@ -130,7 +130,7 @@ KNIFE
|
||||
// KNIFE
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You accidentally cut yourself with the [src]."
|
||||
user.take_organ_damage(20)
|
||||
return
|
||||
@@ -153,7 +153,7 @@ KNIFE
|
||||
sleep(rand(2,4))
|
||||
|
||||
|
||||
if((user.mutations & CLUMSY) && prob(50)) //What if he's a clown?
|
||||
if((CLUMSY in user.mutations) && prob(50)) //What if he's a clown?
|
||||
M << "\red You accidentally slam yourself with the [src]!"
|
||||
M.Weaken(1)
|
||||
user.take_organ_damage(2)
|
||||
|
||||
@@ -1082,9 +1082,9 @@ CIRCULAR SAW
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
//if(M.mutations & HUSK) return ..()
|
||||
//if(NOCLONE in M.mutations) return ..()
|
||||
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -1488,12 +1488,11 @@ CIRCULAR SAW
|
||||
////////////////
|
||||
//CIRCULAR SAW//
|
||||
////////////////
|
||||
|
||||
/obj/item/weapon/circular_saw/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
@@ -1673,7 +1672,7 @@ CIRCULAR SAW
|
||||
/obj/item/weapon/surgical_tool/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
if((usr.mutations & 16) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M << "\red You stab yourself in the eye."
|
||||
M.disabilities |= 128
|
||||
M.weakened += 4
|
||||
|
||||
@@ -4,6 +4,7 @@ SWORD
|
||||
BLADE
|
||||
AXE
|
||||
STUN BATON
|
||||
ENERGY SHIELD (where else should i even put this)
|
||||
*/
|
||||
|
||||
|
||||
@@ -22,7 +23,7 @@ STUN BATON
|
||||
color = pick("red","blue","green","purple")
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You accidentally cut yourself with [src]."
|
||||
user.take_organ_damage(5,5)
|
||||
active = !active
|
||||
@@ -104,7 +105,7 @@ STUN BATON
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_self(mob/user as mob)
|
||||
src.status = !( src.status )
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.Paralyse(60)
|
||||
return
|
||||
@@ -120,7 +121,7 @@ STUN BATON
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in usr.mutations) && prob(50))
|
||||
usr << "\red You grab the stunbaton on the wrong side."
|
||||
usr.Weaken(30)
|
||||
return
|
||||
@@ -165,7 +166,7 @@ STUN BATON
|
||||
R.cell.charge -= 20
|
||||
else
|
||||
charges--
|
||||
if (M.stuttering < 1 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
if (M.stuttering < 1 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 1
|
||||
M.Stun(1)
|
||||
M.Weaken(1)
|
||||
@@ -176,7 +177,7 @@ STUN BATON
|
||||
R.cell.charge -= 20
|
||||
else
|
||||
charges--
|
||||
if (M.stuttering < 10 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
if (M.stuttering < 10 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 10
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
@@ -193,7 +194,7 @@ STUN BATON
|
||||
charges -= 5
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You club yourself over the head."
|
||||
user.Weaken(3 * force)
|
||||
if(ishuman(user))
|
||||
@@ -215,7 +216,7 @@ STUN BATON
|
||||
if (user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
playsound(src.loc, "swing_hit", 50, 1, -1)
|
||||
if (M.stuttering < 8 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
if (M.stuttering < 8 && (!(HULK in M.mutations)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||
M.stuttering = 8
|
||||
M.Stun(8)
|
||||
M.Weaken(8)
|
||||
@@ -227,3 +228,29 @@ STUN BATON
|
||||
M.Weaken(5)
|
||||
for(var/mob/O in viewers(M))
|
||||
if (O.client) O.show_message("\red <B>[M] has been stunned with the police baton by [user]!</B>", 1, "\red You hear someone fall", 2)
|
||||
|
||||
/obj/item/weapon/shield/energy/IsShield()
|
||||
if(active)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red You beat yourself in the head with [src]."
|
||||
user.take_organ_damage(5)
|
||||
active = !active
|
||||
if (active)
|
||||
force = 10
|
||||
icon_state = "eshield[active]"
|
||||
w_class = 4
|
||||
playsound(user, 'saberon.ogg', 50, 1)
|
||||
user << "\blue [src] is now active."
|
||||
else
|
||||
force = 3
|
||||
icon_state = "eshield[active]"
|
||||
w_class = 1
|
||||
playsound(user, 'saberoff.ogg', 50, 1)
|
||||
user << "\blue [src] can now be concealed."
|
||||
add_fingerprint(user)
|
||||
return
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/*
|
||||
CONTAINS:
|
||||
@@ -36,7 +36,7 @@ WELDINGTOOOL
|
||||
if(!istype(M)) return ..()
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
/obj/item/weapon/firbang/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
|
||||
if (user.equipped() == src)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in usr.mutations) && prob(50))
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
src.state = 1
|
||||
src.icon_state = "flashbang1"
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
/obj/item/weapon/firbang/attack_self(mob/user as mob)
|
||||
if (!src.state)
|
||||
if (user.mutations & CLUMSY)
|
||||
if (CLUMSY in user.mutations)
|
||||
user << "\red Huh? How does this thing work?!"
|
||||
spawn( 5 )
|
||||
prime()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
new /obj/item/weapon/pen(src)
|
||||
|
||||
/obj/item/weapon/secstorage/sbriefcase/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(2)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
user.take_organ_damage(0,10)
|
||||
return
|
||||
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(20)
|
||||
@@ -62,10 +62,10 @@
|
||||
if(M.mind && (M.mind.assigned_role == "Chaplain"))
|
||||
user << "\red You can't heal yourself!"
|
||||
return
|
||||
if((M.mind in ticker.mode.cult) && (prob(20)))
|
||||
/*if((M.mind in ticker.mode.cult) && (prob(20)))
|
||||
M << "\red The power of [src.deity_name] clears your mind of heresy!"
|
||||
user << "\red You see how [M]'s eyes become clear, the cult no longer holds control over him!"
|
||||
ticker.mode.remove_cultist(M.mind)
|
||||
ticker.mode.remove_cultist(M.mind)*/
|
||||
if ((istype(M, /mob/living/carbon/human) && prob(60)))
|
||||
bless(M)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob)
|
||||
//..()
|
||||
|
||||
if ((user.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "\red The [src] slips out of your hand and hits your head."
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(2)
|
||||
|
||||
@@ -43,7 +43,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
|
||||
|
||||
/obj/structure/table/attack_paw(mob/user as mob)
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations))
|
||||
usr << "\blue You destroy the table."
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
@@ -103,7 +103,7 @@ TABLE AND RACK OBJECT INTERATIONS
|
||||
|
||||
|
||||
/obj/structure/table/attack_hand(mob/user as mob)
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
usr << "\blue You destroy the table."
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This could either be split into the proper DM files or placed somewhere else all together, but it'll do for now -Nodrak
|
||||
|
||||
/*
|
||||
|
||||
SYNDICATE UPLINKS
|
||||
@@ -19,14 +21,19 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
||||
var/welcome // Welcoming menu message
|
||||
var/menu_message = "" // The actual menu text
|
||||
var/items // List of items
|
||||
var/item_data // raw item text
|
||||
var/list/ItemList // Parsed list of items
|
||||
var/uses // Numbers of crystals
|
||||
var/uplink_data // designated uplink items
|
||||
// List of items not to shove in their hands.
|
||||
var/list/NotInHand = list(/obj/machinery/singularity_beacon/syndicate)
|
||||
|
||||
New()
|
||||
welcome = ticker.mode.uplink_welcome
|
||||
items = dd_replacetext(ticker.mode.uplink_items, "\n", "") // Getting the text string of items
|
||||
if(!item_data)
|
||||
items = dd_replacetext(ticker.mode.uplink_items, "\n", "") // Getting the text string of items
|
||||
else
|
||||
items = dd_replacetext(item_data)
|
||||
ItemList = dd_text2list(src.items, ";") // Parsing the items text string
|
||||
uses = ticker.mode.uplink_uses
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
user << "\blue You arm the mousetrap."
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if((user.getBrainLoss() >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
if(( (user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50)))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
/obj/item/weapon/mousetrap/attack_hand(mob/user as mob)
|
||||
if(armed)
|
||||
if((user.getBrainLoss() >= 60 || user.mutations & CLUMSY) && prob(50))
|
||||
if(( (user.getBrainLoss() >= 60 || CLUMSY in user.mutations)) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
//These all need to be rewritten to use visiblemessage()
|
||||
|
||||
/obj/structure/window/attack_hand()
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
usr << "\blue You smash through the window."
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
|
||||
/obj/structure/window/attack_paw()
|
||||
if ((usr.mutations & HULK))
|
||||
if ((HULK in usr.mutations))
|
||||
usr << "\blue You smash through the window."
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/carbon/proc/toggle_throw_mode()
|
||||
if(!equipped())//Not holding anything
|
||||
if(mutations & TK)
|
||||
if(TK in mutations)
|
||||
if (hand)
|
||||
l_hand = new/obj/item/tk_grab(src)
|
||||
l_hand:host = src
|
||||
@@ -99,7 +99,8 @@
|
||||
if(istype(A,/mob/living))
|
||||
if(A:lying) continue
|
||||
src.throw_impact(A)
|
||||
src.throwing = 0
|
||||
if(src.throwing == 1)
|
||||
src.throwing = 0
|
||||
if(isobj(A))
|
||||
if(A.density && !A.CanPass(src,target)) // **TODO: Better behaviour for windows
|
||||
// which are dense, but shouldn't always stop movement
|
||||
@@ -110,7 +111,22 @@
|
||||
if(istype(hit_atom,/mob/living))
|
||||
var/mob/living/M = hit_atom
|
||||
M.visible_message("\red [hit_atom] has been hit by [src].")
|
||||
if(src.vars.Find("throwforce"))
|
||||
|
||||
if(!istype(src, /obj/item)) // this is a big item that's being thrown at them~
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/armor_block = M:run_armor_check("chest", "melee")
|
||||
M:apply_damage(rand(20,45), BRUTE, "chest", armor_block)
|
||||
|
||||
visible_message("\red <B>[M] has been knocked down by the force of [src]!</B>")
|
||||
M:apply_effect(rand(4,12), WEAKEN, armor_block)
|
||||
|
||||
M:UpdateDamageIcon()
|
||||
else
|
||||
M.take_organ_damage(rand(20,45))
|
||||
|
||||
|
||||
else if(src.vars.Find("throwforce"))
|
||||
M.take_organ_damage(src:throwforce)
|
||||
|
||||
log_attack("<font color='red'>[hit_atom] ([M.ckey]) was hit by [src] thrown by ([src.fingerprintslast])</font>")
|
||||
@@ -141,8 +157,13 @@
|
||||
/atom/movable/proc/throw_at(atom/target, range, speed)
|
||||
if(!target || !src) return 0
|
||||
//use a modified version of Bresenham's algorithm to get from the atom's current position to that of the target
|
||||
|
||||
src.throwing = 1
|
||||
|
||||
if(usr)
|
||||
if((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
|
||||
src.throwing = 2 // really strong throw!
|
||||
|
||||
var/dist_x = abs(target.x - src.x)
|
||||
var/dist_y = abs(target.y - src.y)
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
dismantle_wall()
|
||||
|
||||
/turf/simulated/wall/attack_paw(mob/user as mob)
|
||||
if ((user.mutations & HULK))
|
||||
if ((HULK in user.mutations))
|
||||
if (prob(40))
|
||||
usr << text("\blue You smash through the wall.")
|
||||
dismantle_wall(1)
|
||||
@@ -396,7 +396,7 @@
|
||||
return
|
||||
|
||||
/turf/simulated/wall/attack_hand(mob/user as mob)
|
||||
if ((user.mutations & HULK))
|
||||
if ((HULK in user.mutations) || (SUPRSTR in user.augmentations))
|
||||
if (prob(40))
|
||||
usr << text("\blue You smash through the wall.")
|
||||
dismantle_wall(1)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
#define SOLID 1
|
||||
#define LIQUID 2
|
||||
#define GAS 3
|
||||
@@ -865,7 +863,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M.mutations = 0
|
||||
M.mutations = list()
|
||||
M.disabilities = 0
|
||||
M.jitteriness = 0
|
||||
if(volume > REAGENTS_OVERDOSE)
|
||||
@@ -1761,6 +1759,12 @@ datum
|
||||
reagent_state = GAS
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
|
||||
ultraglue
|
||||
name = "Ulta Glue"
|
||||
id = "glue"
|
||||
description = "An extremely powerful bonding agent."
|
||||
color = "#FFFFCC" // rgb: 255, 255, 204
|
||||
|
||||
diethylamine
|
||||
name = "Diethylamine"
|
||||
id = "diethylamine"
|
||||
|
||||
@@ -995,7 +995,7 @@
|
||||
if(!T.dna)
|
||||
usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)"
|
||||
return
|
||||
if(T.mutations2 & NOCLONE) //target done been et, no more blood in him
|
||||
if(NOCLONE in T.mutations) //target done been et, no more blood in him
|
||||
user << "\red You are unable to locate any blood."
|
||||
return
|
||||
if(ishuman(T))
|
||||
|
||||
@@ -679,7 +679,7 @@
|
||||
attack_verb = "slash"
|
||||
|
||||
if (prob(90))
|
||||
if (M.mutations & HULK)//HULK SMASH
|
||||
if ((HULK in M.mutations) || (SUPRSTR in M.augmentations))//HULK SMASH
|
||||
damage += 14
|
||||
spawn(0)
|
||||
Paralyse(5)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/mob/living/carbon/alien/humanoid
|
||||
var/oxygen_alert = 0
|
||||
@@ -127,15 +127,15 @@
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
if(src.getFireLoss())
|
||||
if(src.mutations & COLD_RESISTANCE || prob(50))
|
||||
if((COLD_RESISTANCE in src.mutations) || prob(50))
|
||||
switch(src.getFireLoss())
|
||||
if(1 to 50)
|
||||
src.adjustFireLoss(-1)
|
||||
if(51 to 100)
|
||||
src.adjustFireLoss(-5)
|
||||
|
||||
if (src.mutations & HULK && src.health <= 25)
|
||||
src.mutations &= ~HULK
|
||||
if ((HULK in src.mutations) && src.health <= 25)
|
||||
src.mutations.Remove(HULK)
|
||||
src << "\red You suddenly feel very weak."
|
||||
Weaken(3)
|
||||
emote("collapse")
|
||||
@@ -284,7 +284,7 @@
|
||||
breath.toxins -= toxins_used
|
||||
breath.oxygen += toxins_used
|
||||
|
||||
if(breath.temperature > (T0C+66) && !(src.mutations & COLD_RESISTANCE)) // Hot air hurts :(
|
||||
if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in src.mutations)) // Hot air hurts :(
|
||||
if(prob(20))
|
||||
src << "\red You feel a searing heat in your lungs!"
|
||||
fire_alert = max(fire_alert, 1)
|
||||
@@ -340,7 +340,7 @@
|
||||
thermal_protection += 0.2
|
||||
if(wear_suit && (wear_suit.flags & SUITSPACE))
|
||||
thermal_protection += 3
|
||||
if(src.mutations & COLD_RESISTANCE)
|
||||
if(COLD_RESISTANCE in src.mutations)
|
||||
thermal_protection += 5
|
||||
|
||||
return thermal_protection
|
||||
@@ -364,16 +364,17 @@
|
||||
|
||||
if(reagents) reagents.metabolize(src)
|
||||
|
||||
/*if(src.nutrition > 500 && !(src.mutations & FAT))
|
||||
/* if(src.nutrition > 500 && !(FAT in src.mutations))
|
||||
if(prob(5 + round((src.nutrition - 200) / 2)))
|
||||
src << "\red You suddenly feel blubbery!"
|
||||
src.mutations |= FAT
|
||||
update_body()
|
||||
if (src.nutrition < 100 && src.mutations & FAT)
|
||||
src.mutations.Add(FAT)
|
||||
// update_body()
|
||||
if (src.nutrition < 100 && (FAT in src.mutations))
|
||||
if(prob(round((50 - src.nutrition) / 100)))
|
||||
src << "\blue You feel fit again!"
|
||||
src.mutations &= ~FAT
|
||||
update_body()*/
|
||||
src.mutations.Remove(FAT)
|
||||
// update_body()
|
||||
*/
|
||||
if (src.nutrition > 0)
|
||||
src.nutrition -= HUNGER_FACTOR
|
||||
|
||||
@@ -488,7 +489,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY)
|
||||
if (src.stat == 2 || (XRAY in src.mutations))
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
now_pushing = 1
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
/*
|
||||
if(prob(70))
|
||||
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
@@ -444,7 +444,7 @@
|
||||
attack_verb = "slash"
|
||||
|
||||
if (prob(90))
|
||||
if (M.mutations & HULK)
|
||||
if ((HULK in M.mutations) || (SUPRSTR in M.augmentations))
|
||||
damage += 5
|
||||
spawn(0)
|
||||
Paralyse(1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/mob/living/carbon/alien/larva
|
||||
var/oxygen_alert = 0
|
||||
@@ -259,7 +259,7 @@
|
||||
breath.toxins -= toxins_used
|
||||
breath.oxygen += toxins_used
|
||||
|
||||
if(breath.temperature > (T0C+66) && !(mutations & COLD_RESISTANCE)) // Hot air hurts :(
|
||||
if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in src.mutations)) // Hot air hurts :(
|
||||
if(prob(20))
|
||||
src << "\red You feel a searing heat in your lungs!"
|
||||
fire_alert = max(fire_alert, 1)
|
||||
@@ -287,16 +287,17 @@
|
||||
|
||||
if(reagents) reagents.metabolize(src)
|
||||
|
||||
/* if(nutrition > 500 && !(mutations & FAT))
|
||||
/* if(nutrition > 500 && !(FAT in src.mutations))
|
||||
if(prob(5 + round((nutrition - 200) / 2)))
|
||||
src << "\red You suddenly feel blubbery!"
|
||||
mutations |= FAT
|
||||
update_body()
|
||||
if (nutrition < 100 && mutations & FAT)
|
||||
mutations.Add(FAT)
|
||||
// update_body()
|
||||
if (nutrition < 100 && (FAT in src.mutations))
|
||||
if(prob(round((50 - nutrition) / 100)))
|
||||
src << "\blue You feel fit again!"
|
||||
mutations &= ~FAT
|
||||
update_body()*/
|
||||
mutations.Add(FAT)
|
||||
// update_body()
|
||||
*/
|
||||
if (nutrition > 0)
|
||||
nutrition-= HUNGER_FACTOR
|
||||
|
||||
@@ -411,7 +412,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (stat == 2 || mutations & XRAY)
|
||||
if (stat == 2 || (XRAY in src.mutations))
|
||||
sight |= SEE_TURFS
|
||||
sight |= SEE_MOBS
|
||||
sight |= SEE_OBJS
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (stat == 2 || mutations & XRAY)
|
||||
if (stat == 2 || (XRAY in src.mutations))
|
||||
sight |= SEE_TURFS
|
||||
sight |= SEE_MOBS
|
||||
sight |= SEE_OBJS
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
src.nutrition -= HUNGER_FACTOR/10
|
||||
if(src.m_intent == "run")
|
||||
src.nutrition -= HUNGER_FACTOR/10
|
||||
/*if(src.mutations & FAT && src.m_intent == "run" && src.bodytemperature <= 360)
|
||||
src.bodytemperature += 2*/
|
||||
|
||||
/* if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
|
||||
src.bodytemperature += 2
|
||||
*/
|
||||
/mob/living/carbon/relaymove(var/mob/user, direction)
|
||||
if(user in src.stomach_contents)
|
||||
if(prob(40))
|
||||
|
||||
@@ -100,17 +100,17 @@
|
||||
return ..(gibbed)
|
||||
|
||||
/mob/living/carbon/human/proc/ChangeToHusk()
|
||||
if(mutations & HUSK)
|
||||
if(HUSK in src.mutations)
|
||||
return
|
||||
var/datum/organ/external/head/head = get_organ("head")
|
||||
if(head)
|
||||
head.disfigured = 1
|
||||
name = get_visible_name()
|
||||
mutations |= HUSK
|
||||
mutations.Add(HUSK)
|
||||
update_body()
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/Drain()
|
||||
ChangeToHusk()
|
||||
mutations2 |= NOCLONE
|
||||
mutations.Add(NOCLONE)
|
||||
return
|
||||
@@ -786,3 +786,163 @@
|
||||
src.hud_used.hotkey_ui_hidden = 1
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Radar-related things
|
||||
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/proc/close_radar()
|
||||
radar_open = 0
|
||||
for(var/obj/screen/x in client.screen)
|
||||
if( (x.name == "radar" && x.icon == 'radar.dmi') || (x in radar_blips) )
|
||||
client.screen -= x
|
||||
del(x)
|
||||
|
||||
place_radar_closed()
|
||||
|
||||
/mob/living/carbon/human/proc/place_radar_closed()
|
||||
var/obj/screen/closedradar = new()
|
||||
closedradar.icon = 'radar.dmi'
|
||||
closedradar.icon_state = "radarclosed"
|
||||
closedradar.screen_loc = "WEST,NORTH-1"
|
||||
closedradar.name = "radar closed"
|
||||
client.screen += closedradar
|
||||
|
||||
/mob/living/carbon/human/proc/start_radar()
|
||||
|
||||
for(var/obj/screen/x in client.screen)
|
||||
if(x.name == "radar closed" && x.icon == 'radar.dmi')
|
||||
client.screen -= x
|
||||
del(x)
|
||||
|
||||
var/obj/screen/cornerA = new()
|
||||
cornerA.icon = 'radar.dmi'
|
||||
cornerA.icon_state = "radar(1,1)"
|
||||
cornerA.screen_loc = "WEST,NORTH-2"
|
||||
cornerA.name = "radar"
|
||||
|
||||
var/obj/screen/cornerB = new()
|
||||
cornerB.icon = 'radar.dmi'
|
||||
cornerB.icon_state = "radar(2,1)"
|
||||
cornerB.screen_loc = "WEST+1,NORTH-2"
|
||||
cornerB.name = "radar"
|
||||
|
||||
var/obj/screen/cornerC = new()
|
||||
cornerC.icon = 'radar.dmi'
|
||||
cornerC.icon_state = "radar(1,2)"
|
||||
cornerC.screen_loc = "WEST,NORTH-1"
|
||||
cornerC.name = "radar"
|
||||
|
||||
var/obj/screen/cornerD = new()
|
||||
cornerD.icon = 'radar.dmi'
|
||||
cornerD.icon_state = "radar(2,2)"
|
||||
cornerD.screen_loc = "WEST+1,NORTH-1"
|
||||
cornerD.name = "radar"
|
||||
|
||||
client.screen += cornerA
|
||||
client.screen += cornerB
|
||||
client.screen += cornerC
|
||||
client.screen += cornerD
|
||||
|
||||
radar_open = 1
|
||||
|
||||
while(radar_open && (RADAR in augmentations))
|
||||
update_radar()
|
||||
sleep(6)
|
||||
|
||||
/mob/living/carbon/human/proc/update_radar()
|
||||
|
||||
if(!client) return
|
||||
var/list/found_targets = list()
|
||||
|
||||
var/max_dist = 29 // 29 tiles is the max distance
|
||||
|
||||
// If the mob is inside a turf, set the center to the object they're in
|
||||
var/atom/distance_ref = src
|
||||
if(!isturf(src.loc))
|
||||
distance_ref = loc
|
||||
|
||||
// Clear the radar_blips cache
|
||||
for(var/x in radar_blips)
|
||||
client.screen -= x
|
||||
del(x)
|
||||
radar_blips = list()
|
||||
|
||||
var/starting_px = 3
|
||||
var/starting_py = 3
|
||||
|
||||
for(var/mob/living/M in orange(max_dist, distance_ref))
|
||||
if(M.stat == 2) continue
|
||||
found_targets.Add(M)
|
||||
|
||||
for(var/obj/effect/critter/C in orange(max_dist, distance_ref))
|
||||
if(!C.alive) continue
|
||||
found_targets.Add(C)
|
||||
|
||||
for(var/obj/mecha/M in orange(max_dist, distance_ref))
|
||||
if(!M.occupant) continue
|
||||
found_targets.Add(M)
|
||||
|
||||
for(var/obj/structure/closet/C in orange(max_dist, distance_ref))
|
||||
for(var/mob/living/M in C.contents)
|
||||
if(M.stat == 2) continue
|
||||
found_targets.Add(M)
|
||||
|
||||
// Loop through all living mobs in a range.
|
||||
for(var/atom/A in found_targets)
|
||||
|
||||
var/a_x = A.x
|
||||
var/a_y = A.y
|
||||
|
||||
if(!isturf(A.loc))
|
||||
a_x = A.loc.x
|
||||
a_y = A.loc.y
|
||||
|
||||
var/blip_x = max_dist + (-( distance_ref.x-a_x ) ) + starting_px
|
||||
var/blip_y = max_dist + (-( distance_ref.y-a_y ) ) + starting_py
|
||||
var/obj/screen/blip = new()
|
||||
blip.icon = 'radar.dmi'
|
||||
blip.name = "Blip"
|
||||
blip.layer = 21
|
||||
blip.screen_loc = "WEST:[blip_x-1],NORTH-2:[blip_y-1]" // offset -1 because the center of the blip is not at the bottomleft corner (14)
|
||||
|
||||
if(istype(A, /mob/living))
|
||||
var/mob/living/M = A
|
||||
if(ishuman(M))
|
||||
if(M:wear_id)
|
||||
var/job = M:wear_id:GetJobName()
|
||||
if(job == "Security Officer")
|
||||
blip.icon_state = "secblip"
|
||||
blip.name = "Security Officer"
|
||||
else if(job == "Captain" || job == "Research Director" || job == "Chief Engineer" || job == "Chief Medical Officer" || job == "Head of Security" || job == "Head of Personnel")
|
||||
blip.icon_state = "headblip"
|
||||
blip.name = "Station Head"
|
||||
else
|
||||
blip.icon_state = "civblip"
|
||||
blip.name = "Civilian"
|
||||
else
|
||||
blip.icon_state = "civblip"
|
||||
blip.name = "Civilian"
|
||||
|
||||
else if(issilicon(M))
|
||||
blip.icon_state = "roboblip"
|
||||
blip.name = "Robotic Organism"
|
||||
|
||||
else
|
||||
blip.icon_state = "unknownblip"
|
||||
blip.name = "Unknown Organism"
|
||||
|
||||
else if(istype(A, /obj/effect/critter))
|
||||
blip.icon_state = "unknownblip"
|
||||
blip.name = "Unknown Organism"
|
||||
|
||||
else if(istype(A, /obj/mecha))
|
||||
blip.icon_state = "roboblip"
|
||||
blip.name = "Robotic Organism"
|
||||
|
||||
radar_blips.Add(blip)
|
||||
client.screen += blip
|
||||
|
||||
|
||||
|
||||
@@ -301,12 +301,12 @@
|
||||
if(tally < 0)
|
||||
tally = 0
|
||||
|
||||
if(mutations & mRun)
|
||||
tally = 0
|
||||
|
||||
if(istype(M) && M.lying) //Pulling lying down people is slower
|
||||
tally += 3
|
||||
|
||||
if(mRun in mutations)
|
||||
tally = 0
|
||||
|
||||
return tally
|
||||
|
||||
/mob/living/carbon/human/Stat()
|
||||
@@ -871,19 +871,19 @@
|
||||
body_overlays_standing.Cut()
|
||||
body_overlays_lying.Cut()
|
||||
|
||||
if (mutations & HULK)
|
||||
if (HULK in mutations)
|
||||
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "hulk_[gender]_s")
|
||||
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "hulk_[gender]_l")
|
||||
|
||||
if (mutations & COLD_RESISTANCE)
|
||||
if (COLD_RESISTANCE in mutations)
|
||||
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "fire_s")
|
||||
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "fire_l")
|
||||
|
||||
if (mutations & TK)
|
||||
if (TK in mutations)
|
||||
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead_s")
|
||||
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead_l")
|
||||
|
||||
if (mutations & LASER)
|
||||
if (LASER in mutations)
|
||||
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_s")
|
||||
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_l")
|
||||
|
||||
@@ -1396,7 +1396,7 @@
|
||||
stand_icon = new /icon('human.dmi', "torso_[g]_s")
|
||||
lying_icon = new /icon('human.dmi', "torso_[g]_l")
|
||||
|
||||
var/husk = (mutations & HUSK)
|
||||
var/husk = (HUSK in mutations)
|
||||
|
||||
stand_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "chest_[g]_l"), ICON_OVERLAY)
|
||||
@@ -2605,24 +2605,24 @@ It can still be worn/put on as normal.
|
||||
heal_overall_damage(0, -amount)
|
||||
|
||||
/mob/living/carbon/human/Stun(amount)
|
||||
if(mutations & HULK)
|
||||
if(HULK in mutations)
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/Weaken(amount)
|
||||
if(mutations & HULK)
|
||||
if(HULK in mutations)
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/Paralyse(amount)
|
||||
if(mutations & HULK)
|
||||
if(HULK in mutations)
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/proc/morph()
|
||||
set name = "Morph"
|
||||
set category = "Superpower"
|
||||
if(!(src.mutations & mMorph))
|
||||
if(!(mMorph in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
return
|
||||
|
||||
@@ -2711,7 +2711,7 @@ It can still be worn/put on as normal.
|
||||
/mob/living/carbon/human/proc/remotesay()
|
||||
set name = "Project mind"
|
||||
set category = "Superpower"
|
||||
if(!(src.mutations & mRemotetalk))
|
||||
if(!(mRemotetalk in src.mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
return
|
||||
var/list/creatures = list()
|
||||
@@ -2720,7 +2720,7 @@ It can still be worn/put on as normal.
|
||||
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
|
||||
|
||||
var/say = input ("What do you wish to say")
|
||||
if(target.mutations & mRemotetalk)
|
||||
if(mRemotetalk in target.mutations)
|
||||
target.show_message("\blue You hear [src.real_name]'s voice: [say]")
|
||||
else
|
||||
target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
|
||||
@@ -2734,7 +2734,7 @@ It can still be worn/put on as normal.
|
||||
set name = "Remote View"
|
||||
set category = "Superpower"
|
||||
|
||||
if(!(src.mutations & mRemote))
|
||||
if(!(mRemote in src.mutations))
|
||||
reset_view(0)
|
||||
remoteobserve = null
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
|
||||
@@ -44,7 +44,9 @@
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
|
||||
if(M.mutations & HULK) damage += 5
|
||||
if(HULK in M.mutations) damage += 5
|
||||
if(SUPRSTR in M.augmentations) damage += 5
|
||||
|
||||
playsound(loc, "punch", 25, 1, -1)
|
||||
|
||||
visible_message("\red <B>[M] has punched [src]!</B>")
|
||||
@@ -103,6 +105,28 @@
|
||||
return 1
|
||||
|
||||
if("hurt")
|
||||
|
||||
if(ELECTRICHANDS in M.augmentations)
|
||||
var/gendertxt = "their"
|
||||
if(M.gender == "male")
|
||||
gendertxt = "his"
|
||||
if(M.gender == "female")
|
||||
gendertxt = "her"
|
||||
|
||||
visible_message("\red <B>[M] has shocked [src] with [gendertxt] bare hands!</B>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Used Electric Hands nanoaug power on [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been shocked by [M.name] with the Electric Hands nanoaug ([M.ckey])</font>")
|
||||
|
||||
log_admin("ATTACK: [M.name] ([M.ckey]) used Electric Hands nanoaug on [src.name] ([src.ckey]), shocking them .")
|
||||
message_admins("ATTACK: [M.name] ([M.ckey]) used Electric Hands nanoaug on [src.name] ([src.ckey]), shocking them .")
|
||||
log_attack("<font color='red'>[M.name] ([M.ckey]) used Electric Hands nanoaug on [src.name] ([src.ckey]), shocking them </font>")
|
||||
|
||||
|
||||
var/armorblock = run_armor_check(M.zone_sel.selecting, "energy")
|
||||
apply_effects(5,5,0,0,5,0,0,armorblock)
|
||||
|
||||
return
|
||||
|
||||
if(M.type != /mob/living/carbon/human/tajaran)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Punched [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been punched by [M.name] ([M.ckey])</font>")
|
||||
@@ -143,7 +167,8 @@
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
|
||||
if(M.mutations & HULK) damage += 5
|
||||
if(HULK in M.mutations) damage += 5
|
||||
if(SUPRSTR in M.augmentations) damage += 5
|
||||
|
||||
switch(attack_verb)
|
||||
if(("slash") || ("scratch"))
|
||||
|
||||
@@ -57,6 +57,9 @@
|
||||
if(blocked)
|
||||
damage = (damage/(blocked+1))
|
||||
|
||||
if(DERMALARMOR in augmentations)
|
||||
damage = damage - (round(damage*0.35)) // reduce damage by 35%
|
||||
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
organ.take_damage(damage, 0, sharp, used_weapon)
|
||||
|
||||
@@ -10,6 +10,12 @@ emp_act
|
||||
|
||||
/mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
|
||||
if(REFLEXES in augmentations)
|
||||
if(prob(50))
|
||||
var/message = pick("[src] skillfully dodges the [P.name]!", "[src] ducks, dodging the [P.name]!", "[src] effortlessly jumps out of the way of the [P.name]!", "[src] dodges the [P.name] in one graceful movement!", "[src] leans back, dodging the [P.name] narrowly!")
|
||||
visible_message("\red <B>[message]</B>")
|
||||
return -1
|
||||
|
||||
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof))
|
||||
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
|
||||
var/reflectchance = 40 - round(P.damage/3)
|
||||
@@ -198,4 +204,4 @@ emp_act
|
||||
if(src.wear_suit) src.wear_suit.add_blood(src)
|
||||
if(src.w_uniform) src.w_uniform.add_blood(src)
|
||||
|
||||
UpdateDamageIcon()
|
||||
UpdateDamageIcon()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. No air applies this value.
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
|
||||
|
||||
handle_disabilities()
|
||||
if(mutations2 & mHallucination)
|
||||
if(mHallucination in mutations)
|
||||
hallucination = 100
|
||||
halloss = 0
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
Paralyse(15)
|
||||
setHalLoss(99)
|
||||
|
||||
if(mutations2 & mSmallsize)
|
||||
if(mSmallsize in mutations)
|
||||
if(!(pass_flags & PASSTABLE))
|
||||
pass_flags |= PASSTABLE
|
||||
else
|
||||
@@ -204,7 +204,7 @@
|
||||
|
||||
|
||||
|
||||
if (mutations & mRegen)
|
||||
if (mRegen in mutations)
|
||||
adjustBruteLoss(-2)
|
||||
adjustToxLoss(-2)
|
||||
adjustOxyLoss(-2)
|
||||
@@ -217,24 +217,24 @@
|
||||
updatehealth()
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/morph in src.verbs))
|
||||
if(mutations & mMorph)
|
||||
if(mMorph in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/morph
|
||||
else
|
||||
if(!(mutations & mMorph))
|
||||
if(!(mMorph in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/remoteobserve in src.verbs))
|
||||
if(mutations & mRemote)
|
||||
if(mRemote in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/remoteobserve
|
||||
else
|
||||
if(!(mutations & mRemote))
|
||||
if(!(mRemote in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
|
||||
if(!(/mob/living/carbon/human/proc/remotesay in src.verbs))
|
||||
if(mutations & mRemotetalk)
|
||||
if(mRemotetalk in mutations)
|
||||
src.verbs += /mob/living/carbon/human/proc/remotesay
|
||||
else
|
||||
if(!(mutations & mRemotetalk))
|
||||
if(!(mRemotetalk in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
|
||||
|
||||
@@ -285,11 +285,37 @@
|
||||
|
||||
handle_mutations_and_radiation()
|
||||
if(getFireLoss())
|
||||
if(mutations & COLD_RESISTANCE || (prob(1) && prob(75)))
|
||||
if((COLD_RESISTANCE in mutations) || (prob(1) && prob(75)))
|
||||
heal_organ_damage(0,1)
|
||||
|
||||
if (mutations & HULK && health <= 25)
|
||||
mutations &= ~HULK
|
||||
// Make nanoregen heal youu, -3 all damage types
|
||||
if(NANOREGEN in augmentations)
|
||||
var/healed = 0
|
||||
if(getToxLoss())
|
||||
adjustToxLoss(-3)
|
||||
healed = 1
|
||||
if(getOxyLoss())
|
||||
adjustOxyLoss(-3)
|
||||
healed = 1
|
||||
if(getCloneLoss())
|
||||
adjustCloneLoss(-3)
|
||||
healed = 1
|
||||
if(getBruteLoss())
|
||||
heal_organ_damage(3,0)
|
||||
healed = 1
|
||||
if(getFireLoss())
|
||||
heal_organ_damage(0,3)
|
||||
healed = 1
|
||||
if(halloss > 0)
|
||||
halloss -= 3
|
||||
if(halloss < 0) halloss = 0
|
||||
healed = 1
|
||||
if(healed)
|
||||
if(prob(5))
|
||||
src << "\blue You feel your wounds mending..."
|
||||
|
||||
if ((HULK in mutations) && health <= 25)
|
||||
mutations.Remove(HULK)
|
||||
src << "\red You suddenly feel very weak."
|
||||
Weaken(3)
|
||||
emote("collapse")
|
||||
@@ -463,7 +489,7 @@
|
||||
canmove = 1
|
||||
|
||||
handle_breath(datum/gas_mixture/breath)
|
||||
if(nodamage || (mutations & mNobreath))
|
||||
if(nodamage || REBREATHER in augmentations || (mNobreath in mutations))
|
||||
return
|
||||
|
||||
if(!breath || (breath.total_moles == 0))
|
||||
@@ -552,7 +578,7 @@
|
||||
SA.moles = 0 //Hack to stop the damned surgeon from giggling.
|
||||
|
||||
|
||||
if(breath.temperature > (T0C+66) && !(mutations & COLD_RESISTANCE)) // Hot air hurts :(
|
||||
if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :(
|
||||
if(prob(20))
|
||||
src << "\red You feel a searing heat in your lungs!"
|
||||
fire_alert = max(fire_alert, 1)
|
||||
@@ -659,6 +685,8 @@
|
||||
*/
|
||||
|
||||
//Account for massive pressure differences. Done by Polymorph
|
||||
|
||||
|
||||
var/pressure = environment.return_pressure()
|
||||
if(!istype(wear_suit, /obj/item/clothing/suit/space) && !istype(wear_suit, /obj/item/clothing/suit/fire))
|
||||
/*if(pressure < 20)
|
||||
@@ -714,7 +742,7 @@
|
||||
thermal_protection += 3
|
||||
if(head && (head.flags & HEADSPACE))
|
||||
thermal_protection += 1
|
||||
if(mutations & COLD_RESISTANCE)
|
||||
if(COLD_RESISTANCE in mutations)
|
||||
thermal_protection += 5
|
||||
|
||||
return thermal_protection
|
||||
@@ -794,15 +822,15 @@
|
||||
adjustToxLoss(-1)
|
||||
adjustOxyLoss(-1)
|
||||
|
||||
/*if(overeatduration > 500 && !(mutations & FAT))
|
||||
/* if(overeatduration > 500 && !(FAT in mutations))
|
||||
src << "\red You suddenly feel blubbery!"
|
||||
mutations |= FAT
|
||||
mutations.Add(FAT)
|
||||
update_body()
|
||||
if (overeatduration < 100 && mutations & FAT)
|
||||
if ((overeatduration < 100 && (FAT in mutations)))
|
||||
src << "\blue You feel fit again!"
|
||||
mutations &= ~FAT
|
||||
update_body()*/
|
||||
|
||||
mutations.Remove(FAT)
|
||||
update_body()
|
||||
*/
|
||||
// nutrition decrease
|
||||
if (nutrition > 0 && stat != 2)
|
||||
// sleeping slows the metabolism, hunger increases more slowly
|
||||
@@ -1097,7 +1125,7 @@
|
||||
|
||||
// Handle special vision stuff, such as thermals or ghost vision
|
||||
// -------------------------------------------------------------
|
||||
if (stat == 2 || mutations & XRAY)
|
||||
if (stat == 2 || (XRAY in mutations))
|
||||
sight |= SEE_TURFS
|
||||
sight |= SEE_MOBS
|
||||
sight |= SEE_OBJS
|
||||
@@ -1387,7 +1415,7 @@
|
||||
if (machine)
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else if(!(mutations & mRemote) && !client.adminobs)
|
||||
else if(!(mRemote in mutations) && !client.adminobs)
|
||||
reset_view(null)
|
||||
if(remoteobserve)
|
||||
remoteobserve = null
|
||||
|
||||
@@ -505,6 +505,16 @@
|
||||
O.show_message(text("\red [] has grabbed [] passively!", M, src), 1)
|
||||
|
||||
else
|
||||
if(ELECTRICHANDS in M.augmentations)
|
||||
var/gendertxt = "their"
|
||||
if(M.gender == "male")
|
||||
gendertxt = "his"
|
||||
if(M.gender == "female")
|
||||
gendertxt = "her"
|
||||
|
||||
visible_message("\red <B>[M] has shocked [src] with [gendertxt] bare hands!</B>")
|
||||
return
|
||||
|
||||
var/damage = rand(1, 9)
|
||||
|
||||
var/attack_verb
|
||||
@@ -521,7 +531,7 @@
|
||||
|
||||
attacked += 10
|
||||
if (prob(90))
|
||||
if (M.mutations & HULK)
|
||||
if ((HULK in M.mutations) || (SUPRSTR in M.augmentations))
|
||||
damage += 5
|
||||
if(Victim)
|
||||
Victim = null
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
var/temperature_alert = 0
|
||||
|
||||
|
||||
@@ -131,15 +132,15 @@
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
if(src.getFireLoss())
|
||||
if(src.mutations & COLD_RESISTANCE || prob(50))
|
||||
if((COLD_RESISTANCE in mutations) || prob(50))
|
||||
switch(src.getFireLoss())
|
||||
if(1 to 50)
|
||||
src.adjustFireLoss(-1)
|
||||
if(51 to 100)
|
||||
src.adjustFireLoss(-5)
|
||||
|
||||
if (src.mutations & HULK && src.health <= 25)
|
||||
src.mutations &= ~HULK
|
||||
if ((HULK in mutations) && src.health <= 25)
|
||||
src.mutations.Remove(HULK)
|
||||
src << "\red You suddenly feel very weak."
|
||||
Weaken(3)
|
||||
emote("collapse")
|
||||
@@ -369,7 +370,10 @@
|
||||
|
||||
if(stat==2)
|
||||
bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
|
||||
|
||||
//Account for massive pressure differences
|
||||
|
||||
|
||||
var/pressure = environment.return_pressure()
|
||||
|
||||
// if(!wear_suit) Monkies cannot into space.
|
||||
@@ -384,6 +388,9 @@
|
||||
if(pressure > HAZARD_HIGH_PRESSURE)
|
||||
|
||||
adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
|
||||
|
||||
|
||||
|
||||
return //TODO: DEFERRED
|
||||
|
||||
handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
|
||||
@@ -405,7 +412,7 @@
|
||||
src.drowsyness--
|
||||
src.eye_blurry = max(2, src.eye_blurry)
|
||||
if (prob(5))
|
||||
src.sleeping = 1
|
||||
src.sleeping += 1
|
||||
Paralyse(5)
|
||||
|
||||
confused = max(0, confused - 1)
|
||||
@@ -527,7 +534,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY)
|
||||
if (src.stat == 2 || (XRAY in mutations))
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
@@ -566,6 +573,7 @@
|
||||
src.healths.icon_state = "health6"
|
||||
else
|
||||
src.healths.icon_state = "health7"
|
||||
|
||||
if (pressure)
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if(environment)
|
||||
@@ -668,4 +676,4 @@
|
||||
if (mind.special_role == "Changeling" && changeling)
|
||||
changeling.chem_charges = between(0, ((max((0.9 - (changeling.chem_charges / 50)), 0.1)*changeling.chem_recharge_multiplier) + changeling.chem_charges), changeling.chem_storage)
|
||||
if ((changeling.geneticdamage > 0))
|
||||
changeling.geneticdamage = changeling.geneticdamage-1
|
||||
changeling.geneticdamage = changeling.geneticdamage-1
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
/*
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(70))
|
||||
usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
now_pushing = 0
|
||||
@@ -167,7 +167,7 @@
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
||||
var/damage = rand(1, 5)
|
||||
if (mutations & HULK) damage += 10
|
||||
if (HULK in mutations) damage += 10
|
||||
adjustBruteLoss(damage)
|
||||
updatehealth()
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
if(BRUTE)
|
||||
adjustBruteLoss(damage/(blocked+1), used_weapon)
|
||||
if(BURN)
|
||||
if(mutations & COLD_RESISTANCE) damage = 0
|
||||
if(COLD_RESISTANCE in mutations) damage = 0
|
||||
adjustFireLoss(damage/(blocked+1), used_weapon)
|
||||
if(TOX)
|
||||
adjustToxLoss(damage/(blocked+1))
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
|
||||
/mob/living/proc/burn_skin(burn_amount, used_weapon = null)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(src.mutations2 & mShock)
|
||||
if(mShock in src.mutations)
|
||||
return 0
|
||||
//world << "DEBUG: burn_skin(), mutations=[mutations]"
|
||||
if (src.mutations & COLD_RESISTANCE) //fireproof
|
||||
if (COLD_RESISTANCE in src.mutations) //fireproof
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
|
||||
var/divided_damage = (burn_amount)/(H.organs.len)
|
||||
@@ -30,7 +30,7 @@
|
||||
H.updatehealth()
|
||||
return 1
|
||||
else if(istype(src, /mob/living/carbon/monkey))
|
||||
if (src.mutations & COLD_RESISTANCE) //fireproof
|
||||
if (COLD_RESISTANCE in src.mutations) //fireproof
|
||||
return 0
|
||||
var/mob/living/carbon/monkey/M = src
|
||||
M.adjustFireLoss(burn_amount)
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
handle_regular_hud_updates()
|
||||
|
||||
if (src.stat == 2 || src.mutations & XRAY || src.sight_mode & BORGXRAY)
|
||||
if (src.stat == 2 || XRAY in mutations || src.sight_mode & BORGXRAY)
|
||||
src.sight |= SEE_TURFS
|
||||
src.sight |= SEE_MOBS
|
||||
src.sight |= SEE_OBJS
|
||||
|
||||
@@ -331,7 +331,7 @@
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
/*
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(20))
|
||||
usr << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
now_pushing = 0
|
||||
|
||||
@@ -196,15 +196,12 @@
|
||||
var/datum/dna/dna = null//Carbon
|
||||
var/radiation = 0.0//Carbon
|
||||
|
||||
var/mutations = 0//Carbon
|
||||
var/mutations2 = 0//Carbon
|
||||
//telekinesis = 1
|
||||
//firemut = 2
|
||||
//xray = 4
|
||||
//hulk = 8
|
||||
//clumsy = 16
|
||||
//obese = 32
|
||||
//husk = 64
|
||||
var/list/mutations = list() //Carbon -- Doohl
|
||||
//see: setup.dm for list of mutations
|
||||
|
||||
var/list/augmentations = list() //Carbon -- Doohl
|
||||
//see: setup.dm for list of augmentations
|
||||
|
||||
var/tkdisable = 0//For remote viewing and stuff. Disables TK.
|
||||
|
||||
var/voice_name = "unidentifiable voice"
|
||||
@@ -293,4 +290,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
var/grav_delay = 0
|
||||
var/being_strangled = 0
|
||||
|
||||
var/list/radar_blips = list() // list of screen objects, radar blips
|
||||
var/radar_open = 0 // nonzero is radar is open
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "grabbed"
|
||||
var/obj/screen/grab/hud1 = null
|
||||
var/mob/affecting = null
|
||||
var/atom/movable/structure = null // if the grab is not grabbing a mob
|
||||
var/mob/assailant = null
|
||||
var/state = 1.0
|
||||
var/killing = 0.0
|
||||
@@ -21,32 +22,52 @@
|
||||
spawn(0)
|
||||
del(src)
|
||||
return grabee
|
||||
|
||||
else if(structure)
|
||||
var/grabee = structure
|
||||
spawn(0)
|
||||
del(src)
|
||||
return grabee
|
||||
|
||||
return null
|
||||
|
||||
|
||||
/obj/item/weapon/grab/proc/synch()
|
||||
if(affecting.anchored)//This will prevent from grabbing people that are anchored.
|
||||
del(src)
|
||||
if (assailant.r_hand == src)
|
||||
hud1.screen_loc = ui_rhand
|
||||
else
|
||||
hud1.screen_loc = ui_lhand
|
||||
if(affecting)
|
||||
if(affecting.anchored)//This will prevent from grabbing people that are anchored.
|
||||
del(src)
|
||||
if (assailant.r_hand == src)
|
||||
hud1.screen_loc = ui_rhand
|
||||
else
|
||||
hud1.screen_loc = ui_lhand
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/grab/process()
|
||||
if(!assailant || !affecting)
|
||||
del(src)
|
||||
return
|
||||
if ((!( isturf(assailant.loc) ) || (!( isturf(affecting.loc) ) || (assailant.loc != affecting.loc && get_dist(assailant, affecting) > 1))))
|
||||
//SN src = null
|
||||
if(!assailant || (!affecting && !structure))
|
||||
del(src)
|
||||
return
|
||||
|
||||
if(affecting && !structure)
|
||||
if ((!( isturf(assailant.loc) ) || (!( isturf(affecting.loc) ) || (assailant.loc != affecting.loc && get_dist(assailant, affecting) > 1))))
|
||||
//SN src = null
|
||||
del(src)
|
||||
return
|
||||
else if(!affecting && structure)
|
||||
if (!isturf(structure.loc) || !isturf(structure.loc) || (assailant.loc != structure.loc && get_dist(assailant, structure) > 1))
|
||||
del(src)
|
||||
return
|
||||
|
||||
if (assailant.client)
|
||||
assailant.client.screen -= hud1
|
||||
assailant.client.screen += hud1
|
||||
if (assailant.pulling == affecting)
|
||||
if (assailant.pulling == affecting || assailant.pulling == structure)
|
||||
assailant.pulling = null
|
||||
|
||||
if (structure)
|
||||
structure.loc = assailant.loc
|
||||
structure.layer = assailant.layer + 1
|
||||
|
||||
if (state <= 2)
|
||||
allow_upgrade = 1
|
||||
if ((assailant.l_hand && assailant.l_hand != src && istype(assailant.l_hand, /obj/item/weapon/grab)))
|
||||
@@ -117,6 +138,9 @@
|
||||
/obj/item/weapon/grab/proc/s_dbclick(obj/screen/S as obj)
|
||||
//if ((assailant.next_move > world.time && !( last_suffocate < world.time + 2 )))
|
||||
// return
|
||||
|
||||
if (!affecting)
|
||||
return
|
||||
if ((!( assailant.canmove ) || assailant.lying))
|
||||
del(src)
|
||||
return
|
||||
@@ -137,12 +161,12 @@
|
||||
return
|
||||
else
|
||||
if (state < 3)
|
||||
/*if(istype(affecting, /mob/living/carbon/human))
|
||||
/* if(istype(affecting, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = affecting
|
||||
if(H.mutations & FAT)
|
||||
if(FAT in H.mutations)
|
||||
assailant << "\blue You can't strangle [affecting] through all that fat!"
|
||||
return*/
|
||||
|
||||
return
|
||||
*/
|
||||
/*Hrm might want to add this back in
|
||||
//we should be able to strangle the Captain if he is wearing a hat
|
||||
for(var/obj/item/clothing/C in list(H.head, H.wear_suit, H.wear_mask, H.w_uniform))
|
||||
@@ -205,6 +229,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/grab/attack(mob/M as mob, mob/user as mob)
|
||||
if(!affecting) return
|
||||
if (M == affecting)
|
||||
if (state < 3)
|
||||
s_dbclick(hud1)
|
||||
@@ -212,7 +237,7 @@
|
||||
s_click(hud1)
|
||||
return
|
||||
if(M == assailant && state >= 2)
|
||||
if( ( ishuman(user) && (user.mutations & FAT) && ismonkey(affecting) ) || ( isalien(user) && iscarbon(affecting) ) )
|
||||
if( ( ishuman(user) && (FAT in user.mutations) && ismonkey(affecting) ) || ( isalien(user) && iscarbon(affecting) ) )
|
||||
var/mob/living/carbon/attacker = user
|
||||
for(var/mob/N in viewers(user, null))
|
||||
if(N.client)
|
||||
|
||||
@@ -554,6 +554,12 @@
|
||||
usr:inv3.icon_state = "inv3"
|
||||
usr:module_active = null
|
||||
|
||||
if("radar")
|
||||
usr:close_radar()
|
||||
|
||||
if("radar closed")
|
||||
usr:start_radar()
|
||||
|
||||
if("Allow Walking")
|
||||
if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes.
|
||||
return
|
||||
@@ -687,7 +693,7 @@
|
||||
displaytime = 4
|
||||
usr.next_move = world.time + 100
|
||||
usr.last_special = world.time + 100
|
||||
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
|
||||
if(isalienadult(usr) || (HULK in usr.mutations) || (SUPRSTR in usr.augmentations))//Don't want to do a lot of logic gating here.
|
||||
usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] is trying to break \the [usr:handcuffed]!</B>", usr), 1)
|
||||
@@ -737,7 +743,7 @@
|
||||
if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
|
||||
usr.next_move = world.time + 200
|
||||
usr.last_special = world.time + 200
|
||||
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
|
||||
if(isalienadult(usr) || (HULK in usr.mutations) || (SUPRSTR in usr.augmentations))//Don't want to do a lot of logic gating here.
|
||||
usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
|
||||
for(var/mob/O in viewers(usr))
|
||||
O.show_message(text("\red <B>[] is trying to break out of \his straight jacket!</B>", usr), 1)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
now_pushing = 1
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(5))
|
||||
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
now_pushing = 0
|
||||
@@ -204,7 +204,7 @@
|
||||
now_pushing = 1
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(50))
|
||||
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
now_pushing = 0
|
||||
|
||||
@@ -350,11 +350,11 @@
|
||||
now_pushing = 1
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
|
||||
/* if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(70))
|
||||
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
|
||||
now_pushing = 0
|
||||
return
|
||||
return*/
|
||||
if(tmob.nopush)
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05
|
||||
|
||||
/obj/item/weapon/paper
|
||||
name = "paper"
|
||||
gender = PLURAL
|
||||
@@ -60,10 +58,11 @@
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if ((usr.mutations & CLUMSY) && prob(50))
|
||||
if ((CLUMSY in usr.mutations) && prob(50))
|
||||
usr << "\red You cut yourself on the paper."
|
||||
return
|
||||
var/n_name = copytext(sanitize(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text),1,MAX_NAME_LEN)
|
||||
var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text
|
||||
n_name = copytext(n_name, 1, 32)
|
||||
if ((loc == usr && usr.stat == 0))
|
||||
name = "paper[(n_name ? text("- '[n_name]'") : null)]"
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
else
|
||||
prot = 1
|
||||
|
||||
if(prot > 0 || (user.mutations & COLD_RESISTANCE))
|
||||
if(prot > 0 || (COLD_RESISTANCE in user.mutations))
|
||||
user << "You remove the light [fitting]"
|
||||
else
|
||||
user << "You try to remove the light [fitting], but you burn your hand on it!"
|
||||
|
||||
@@ -114,12 +114,12 @@
|
||||
update_icon()
|
||||
return
|
||||
if (prob(50))
|
||||
if (M.paralysis < 60 && (!(M.mutations & 8)) )
|
||||
if (M.paralysis < 60 && (!(HULK in M.mutations)) )
|
||||
M.paralysis = 60
|
||||
else
|
||||
if (M.weakened < 60 && (!(M.mutations & 8)) )
|
||||
if (M.weakened < 60 && (!(HULK in M.mutations)) )
|
||||
M.weakened = 60
|
||||
if (M.stuttering < 60 && (!(M.mutations & 8)) )
|
||||
if (M.stuttering < 60 && (!(HULK in M.mutations)) )
|
||||
M.stuttering = 60
|
||||
if(silenced)
|
||||
playsound(user, fire_sound, 10, 1)
|
||||
@@ -147,7 +147,7 @@
|
||||
proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params)//TODO: go over this
|
||||
if(istype(user, /mob/living))
|
||||
var/mob/living/M = user
|
||||
if ((M.mutations & CLUMSY) && prob(50)) ///Who ever came up with this...
|
||||
if ((CLUMSY in M.mutations) && prob(50)) ///Who ever came up with this...
|
||||
M << "\red \the [src] blows up in your face."
|
||||
M.take_organ_damage(0,20)
|
||||
M.drop_item()
|
||||
|
||||
@@ -541,7 +541,7 @@
|
||||
AM.loc = src
|
||||
/*if(istype(AM, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(H.mutations & FAT) // is a human and fat?
|
||||
if(FAT in H.mutations) // is a human and fat?
|
||||
has_fat_guy = 1 // set flag on holder
|
||||
*/
|
||||
if(istype(AM, /obj/structure/bigDelivery))// && !hasmob) Already have a check for this.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
#define PI 3.1415
|
||||
|
||||
#define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol)
|
||||
@@ -136,52 +138,52 @@ var/MAX_EXPLOSION_RANGE = 14
|
||||
|
||||
#define HEADSPACE 4 // head wear protects against space
|
||||
|
||||
#define MASKINTERNALS 8 // mask allows internals
|
||||
#define SUITSPACE 8 // suit protects against space
|
||||
#define MASKINTERNALS 8 // mask allows internals
|
||||
#define SUITSPACE 8 // suit protects against space
|
||||
|
||||
#define USEDELAY 16 // 1 second extra delay on use (Can be used once every 2s)
|
||||
#define NODELAY 32768 // 1 second attackby delay skipped (Can be used once every 0.2s). Most objects have a 1s attackby delay, which doesn't require a flag.
|
||||
#define NOSHIELD 32 // weapon not affected by shield
|
||||
#define CONDUCT 64 // conducts electricity (metal etc.)
|
||||
#define FPRINT 256 // takes a fingerprint
|
||||
#define ON_BORDER 512 // item has priority to check when entering or leaving
|
||||
#define USEDELAY 16 // 1 second extra delay on use (Can be used once every 2s)
|
||||
#define NODELAY 32768 // 1 second attackby delay skipped (Can be used once every 0.2s). Most objects have a 1s attackby delay, which doesn't require a flag.
|
||||
#define NOSHIELD 32 // weapon not affected by shield
|
||||
#define CONDUCT 64 // conducts electricity (metal etc.)
|
||||
#define FPRINT 256 // takes a fingerprint
|
||||
#define ON_BORDER 512 // item has priority to check when entering or leaving
|
||||
|
||||
#define GLASSESCOVERSEYES 1024
|
||||
#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags
|
||||
#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes
|
||||
#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head
|
||||
#define HEADCOVERSMOUTH 2048
|
||||
#define GLASSESCOVERSEYES 1024
|
||||
#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags
|
||||
#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes
|
||||
#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head
|
||||
#define HEADCOVERSMOUTH 2048
|
||||
|
||||
#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc
|
||||
#define NOSLIP 1024 //prevents from slipping on wet floors, in space etc
|
||||
|
||||
#define OPENCONTAINER 4096 // is an open container for chemistry purposes
|
||||
|
||||
// #define ONESIZEFITSALL 8192 // can be worn by fatties (or children? ugh)
|
||||
|
||||
#define NOREACT 16384 //Reagents dont' react inside this container.
|
||||
#define NOREACT 16384 //Reagents dont' react inside this container.
|
||||
|
||||
#define BLOCKHAIR 32768 // temporarily removes the user's hair icon
|
||||
#define BLOCKHAIR 32768 // temporarily removes the user's hair icon
|
||||
|
||||
#define PLASMAGUARD 65536 //Does not get contaminated by plasma.
|
||||
|
||||
//flags for pass_flags
|
||||
#define PASSTABLE 1
|
||||
#define PASSGLASS 2
|
||||
#define PASSGRILLE 4
|
||||
#define PASSBLOB 8
|
||||
#define PASSTABLE 1
|
||||
#define PASSGLASS 2
|
||||
#define PASSGRILLE 4
|
||||
#define PASSBLOB 8
|
||||
|
||||
//turf-only flags
|
||||
#define NOJAUNT 1
|
||||
#define NOJAUNT 1
|
||||
|
||||
|
||||
//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
|
||||
#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEMASK 1 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEARS 2 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEYES 4 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEMASK 1 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEARS 2 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEYES 4 //APPLIES ONLY TO HELMETS!!
|
||||
|
||||
|
||||
//Cant seem to find a mob bitflags area other than the powers one
|
||||
@@ -202,32 +204,88 @@ var/MAX_EXPLOSION_RANGE = 14
|
||||
#define HAND_LEFT 512
|
||||
#define HAND_RIGHT 1024
|
||||
#define HANDS 1536
|
||||
|
||||
#define FULL_BODY 2047
|
||||
|
||||
/*
|
||||
//bitflags for mutations
|
||||
var/const/TK =(1<<0)
|
||||
var/const/COLD_RESISTANCE =(1<<1)
|
||||
var/const/XRAY =(1<<2)
|
||||
var/const/HULK =(1<<3)
|
||||
var/const/CLUMSY =(1<<4)
|
||||
var/const/FAT =(1<<5)
|
||||
var/const/HUSK =(1<<6)
|
||||
var/const/LASER =(1<<7)
|
||||
var/const/HEAL =(1<<8)
|
||||
var/const/mNobreath =(1<<9)
|
||||
var/const/mRemote =(1<<10)
|
||||
var/const/mRegen =(1<<11)
|
||||
var/const/mRun =(1<<12)
|
||||
var/const/mRemotetalk =(1<<13)
|
||||
var/const/mMorph =(1<<14)
|
||||
var/const/mBlend =(1<<15)
|
||||
//the "&" operator cannot go higher than (2^16)-1
|
||||
var/const/mHallucination =(1<<0)
|
||||
var/const/mFingerprints =(1<<1)
|
||||
var/const/mShock =(1<<2)
|
||||
var/const/mSmallsize =(1<<3)
|
||||
var/const/NOCLONE =(1<<4)
|
||||
// Extra powers:
|
||||
#define SHADOW (1<<10) // shadow teleportation (create in/out portals anywhere) (25%)
|
||||
#define SCREAM (1<<11) // supersonic screaming (25%)
|
||||
#define EXPLOSIVE (1<<12) // exploding on-demand (15%)
|
||||
#define REGENERATION (1<<13) // superhuman regeneration (30%)
|
||||
#define REPROCESSOR (1<<14) // eat anything (50%)
|
||||
#define SHAPESHIFTING (1<<15) // take on the appearance of anything (40%)
|
||||
#define PHASING (1<<16) // ability to phase through walls (40%)
|
||||
#define SHIELD (1<<17) // shielding from all projectile attacks (30%)
|
||||
#define SHOCKWAVE (1<<18) // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%)
|
||||
#define ELECTRICITY (1<<19) // ability to shoot electric attacks (15%)
|
||||
|
||||
|
||||
// Nanoaugmentations:
|
||||
#define SUPRSTR (1<<20) // super strength
|
||||
#define RADAR (1<<21) // on-screen mob radar
|
||||
#define ELECTRICHANDS (1<<22) // electric hands
|
||||
#define ESWORDSYNTH (1<<23) // esword synthesizer
|
||||
#define REBREATHER (1<<24) // removes the need to breathe
|
||||
#define DERMALARMOR (1<<25) // 35% damage decrease
|
||||
#define REFLEXES (1<<26) // dodge 50% of projectiles, dodge 25% of melee attacks
|
||||
#define NANOREGEN (1<<27) // regenerative nanobots, -3 all damage types per second
|
||||
*/
|
||||
|
||||
// String identifiers for associative list lookup
|
||||
|
||||
// mob/var/list/mutations
|
||||
|
||||
// Generic mutations:
|
||||
#define TK 1
|
||||
#define COLD_RESISTANCE 2
|
||||
#define XRAY 3
|
||||
#define HULK 4
|
||||
#define CLUMSY 5
|
||||
#define FAT 6
|
||||
#define HUSK 7
|
||||
#define NOCLONE 8
|
||||
|
||||
|
||||
// Extra powers:
|
||||
#define LASER 9 // harm intent - click anywhere to shoot lasers from eyes
|
||||
#define HEAL 10 // healing people with hands
|
||||
#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%)
|
||||
#define SCREAM 12 // supersonic screaming (25%)
|
||||
#define EXPLOSIVE 13 // exploding on-demand (15%)
|
||||
#define REGENERATION 14 // superhuman regeneration (30%)
|
||||
#define REPROCESSOR 15 // eat anything (50%)
|
||||
#define SHAPESHIFTING 16 // take on the appearance of anything (40%)
|
||||
#define PHASING 17 // ability to phase through walls (40%)
|
||||
#define SHIELD 18 // shielding from all projectile attacks (30%)
|
||||
#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%)
|
||||
#define ELECTRICITY 20 // ability to shoot electric attacks (15%)
|
||||
|
||||
|
||||
// mob/var/list/augmentations
|
||||
|
||||
// Nanoaugmentations:
|
||||
#define SUPRSTR 21 // super strength (hulk powers)
|
||||
#define RADAR 22 // on-screen mob radar
|
||||
#define ELECTRICHANDS 23 // electric hands
|
||||
#define ESWORDSYNTH 24 // esword synthesizer
|
||||
#define REBREATHER 25 // removes the need to breathe
|
||||
#define DERMALARMOR 26 // 35% damage decrease
|
||||
#define REFLEXES 27 // dodge 50% of projectiles
|
||||
#define NANOREGEN 28 // regenerative nanobots, -3 all damage types per second
|
||||
|
||||
// Other Mutations:
|
||||
#define mNobreath 100 // no need to breathe
|
||||
#define mRemote 101 // remote viewing
|
||||
#define mRegen 102 // health regen
|
||||
#define mRun 103 // no slowdown
|
||||
#define mRemotetalk 104 // remote talking
|
||||
#define mMorph 105 // changing appearance
|
||||
#define mBlend 106 // nothing (seriously nothing)
|
||||
#define mHallucination 107 // hallucinations
|
||||
#define mFingerprints 108 // no fingerprints
|
||||
#define mShock 109 // insulated hands
|
||||
#define mSmallsize 110 // table climbing
|
||||
|
||||
//mob/var/stat things
|
||||
var/const/CONSCIOUS = 0
|
||||
@@ -235,31 +293,31 @@ var/const/UNCONSCIOUS = 1
|
||||
var/const/DEAD = 2
|
||||
|
||||
// channel numbers for power
|
||||
#define EQUIP 1
|
||||
#define LIGHT 2
|
||||
#define ENVIRON 3
|
||||
#define TOTAL 4 //for total power used only
|
||||
#define EQUIP 1
|
||||
#define LIGHT 2
|
||||
#define ENVIRON 3
|
||||
#define TOTAL 4 //for total power used only
|
||||
|
||||
// bitflags for machine stat variable
|
||||
#define BROKEN 1
|
||||
#define NOPOWER 2
|
||||
#define POWEROFF 4 // tbd
|
||||
#define MAINT 8 // under maintaince
|
||||
#define EMPED 16 // temporary broken by EMP pulse
|
||||
#define BROKEN 1
|
||||
#define NOPOWER 2
|
||||
#define POWEROFF 4 // tbd
|
||||
#define MAINT 8 // under maintaince
|
||||
#define EMPED 16 // temporary broken by EMP pulse
|
||||
|
||||
//bitflags for door switches.
|
||||
#define OPEN 1
|
||||
#define IDSCAN 2
|
||||
#define BOLTS 4
|
||||
#define SHOCK 8
|
||||
#define SAFE 16
|
||||
#define OPEN 1
|
||||
#define IDSCAN 2
|
||||
#define BOLTS 4
|
||||
#define SHOCK 8
|
||||
#define SAFE 16
|
||||
|
||||
#define ENGINE_EJECT_Z 3
|
||||
#define ENGINE_EJECT_Z 3
|
||||
|
||||
//metal, glass, rod stacks
|
||||
#define MAX_STACK_AMOUNT_METAL 50
|
||||
#define MAX_STACK_AMOUNT_GLASS 50
|
||||
#define MAX_STACK_AMOUNT_RODS 60
|
||||
#define MAX_STACK_AMOUNT_METAL 50
|
||||
#define MAX_STACK_AMOUNT_GLASS 50
|
||||
#define MAX_STACK_AMOUNT_RODS 60
|
||||
|
||||
var/const/GAS_O2 = 1 << 0
|
||||
var/const/GAS_N2 = 1 << 1
|
||||
@@ -283,32 +341,54 @@ var/list/global_mutations = list() // list of hidden mutation things
|
||||
|
||||
|
||||
//Damage things
|
||||
#define BRUTE "brute"
|
||||
#define BURN "fire"
|
||||
#define TOX "tox"
|
||||
#define OXY "oxy"
|
||||
#define CLONE "clone"
|
||||
#define HALLOSS "halloss"
|
||||
#define BRUTE "brute"
|
||||
#define BURN "fire"
|
||||
#define TOX "tox"
|
||||
#define OXY "oxy"
|
||||
#define CLONE "clone"
|
||||
#define HALLOSS "halloss"
|
||||
|
||||
#define STUN "stun"
|
||||
#define WEAKEN "weaken"
|
||||
#define PARALYZE "paralize"
|
||||
#define IRRADIATE "irradiate"
|
||||
#define STUTTER "stutter"
|
||||
#define SLUR "slur"
|
||||
#define EYE_BLUR "eye_blur"
|
||||
#define DROWSY "drowsy"
|
||||
#define STUN "stun"
|
||||
#define WEAKEN "weaken"
|
||||
#define PARALYZE "paralize"
|
||||
#define IRRADIATE "irradiate"
|
||||
#define STUTTER "stutter"
|
||||
#define SLUR "slur"
|
||||
#define EYE_BLUR "eye_blur"
|
||||
#define DROWSY "drowsy"
|
||||
|
||||
var/static/list/scarySounds = list('thudswoosh.ogg','Taser.ogg','armbomb.ogg','hiss1.ogg','hiss2.ogg','hiss3.ogg','hiss4.ogg','hiss5.ogg','hiss6.ogg','Glassbr1.ogg','Glassbr2.ogg','Glassbr3.ogg','Welder.ogg','Welder2.ogg','airlock.ogg','clownstep1.ogg','clownstep2.ogg')
|
||||
|
||||
//Security levels
|
||||
#define SEC_LEVEL_GREEN 0
|
||||
#define SEC_LEVEL_BLUE 1
|
||||
#define SEC_LEVEL_RED 2
|
||||
#define SEC_LEVEL_DELTA 3
|
||||
#define SEC_LEVEL_GREEN 0
|
||||
#define SEC_LEVEL_BLUE 1
|
||||
#define SEC_LEVEL_RED 2
|
||||
#define SEC_LEVEL_DELTA 3
|
||||
|
||||
#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level
|
||||
#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level
|
||||
|
||||
// Maximum and minimum character ages.
|
||||
var/const/minimum_age = 20
|
||||
var/const/maximum_age = 65
|
||||
var/const/maximum_age = 65
|
||||
|
||||
var/list/liftable_structures = list(\
|
||||
|
||||
/obj/machinery/autolathe, \
|
||||
/obj/machinery/constructable_frame, \
|
||||
/obj/machinery/hydroponics, \
|
||||
/obj/machinery/computer, \
|
||||
/obj/machinery/optable, \
|
||||
/obj/machinery/dispenser, \
|
||||
/obj/machinery/gibber, \
|
||||
/obj/machinery/microwave, \
|
||||
/obj/machinery/vending, \
|
||||
/obj/machinery/seed_extractor, \
|
||||
/obj/machinery/space_heater, \
|
||||
/obj/machinery/recharge_station, \
|
||||
/obj/machinery/flasher, \
|
||||
/obj/structure/stool, \
|
||||
/obj/structure/closet, \
|
||||
/* /obj/machinery/photocopier, \*/
|
||||
/obj/structure/filingcabinet, \
|
||||
/obj/structure/reagent_dispensers, \
|
||||
/obj/machinery/portable_atmospherics/canister)
|
||||
|
||||
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |