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
This commit is contained in:
Erthilo
2012-06-02 19:46:18 +01:00
parent f90ec4b414
commit 36effbacc2
100 changed files with 1455 additions and 483 deletions
+2 -2
View File
@@ -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.
+1 -1
View File
@@ -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
+25 -5
View File
@@ -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)
+2 -1
View File
@@ -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"
+1 -1
View File
@@ -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 )))
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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)
+6 -3
View File
@@ -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."
+2 -2
View File
@@ -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
+3 -5
View File
@@ -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()
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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()
+1 -1
View File
@@ -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)
+3 -3
View File
@@ -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))
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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 )))
+8 -1
View File
@@ -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
+2 -2
View File
@@ -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"
+2 -2
View File
@@ -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 )))