Merge branch 'incremental_tg' r5600 into bs12_with_tgport

Conflicts:
	baystation12.dme
	code/__HELPERS/global_lists.dm
	code/controllers/master_controller.dm
	code/game/gamemodes/events/ninja_equipment.dm
	code/game/gamemodes/events/space_ninja.dm
	code/game/gamemodes/wizard/rightandwrong.dm
	code/game/hud.dm
	code/game/jobs/job/captain.dm
	code/game/jobs/job/job.dm
	code/game/jobs/job/medical.dm
	code/game/jobs/job/science.dm
	code/game/jobs/job/security.dm
	code/game/machinery/computer/cloning.dm
	code/game/objects/items/blueprints.dm
	code/game/objects/items/weapons/gift_wrappaper.dm
	code/game/objects/items/weapons/implants/implantnanoaug.dm
	code/game/objects/items/weapons/storage/uplink_kits.dm
	code/game/objects/items/weapons/stunbaton.dm
	code/game/turfs/turf.dm
	code/modules/client/client defines.dm
	code/modules/client/client procs.dm
	code/modules/clothing/masks/miscellaneous.dm
	code/modules/clothing/shoes/miscellaneous.dm
	code/modules/clothing/under/ties.dm
	code/modules/mob/living/carbon/human/human_attackhand.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/living/carbon/human/say.dm
	code/modules/mob/living/silicon/say.dm
	code/modules/mob/mob_defines.dm
	code/modules/paperwork/clipboard.dm
	code/modules/paperwork/pen.dm
	code/modules/paperwork/stamps.dm
	code/modules/projectiles/projectile.dm
	code/modules/reagents/Chemistry-Holder.dm
	code/modules/reagents/reagent_containers/glass.dm
	code/setup.dm
	config/config.txt
	html/changelog.html
	icons/effects/effects.dmi
	icons/mob/feet.dmi
	icons/mob/head.dmi
	icons/mob/items_lefthand.dmi
	icons/mob/items_righthand.dmi
	icons/mob/mask.dmi
	icons/mob/suit.dmi
	icons/mob/ties.dmi
	icons/mob/uniform.dmi
	icons/obj/clothing/hats.dmi
	icons/obj/clothing/masks.dmi
	icons/obj/clothing/shoes.dmi
	icons/obj/clothing/suits.dmi
	icons/obj/clothing/ties.dmi
	maps/tgstation.2.1.0.dmm

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2013-01-23 00:23:37 +10:00
211 changed files with 23396 additions and 11979 deletions
+16 -18
View File
@@ -105,7 +105,7 @@
return
/obj/effect/alien/resin/attack_hand()
if ((HULK in usr.mutations) || (SUPRSTR in usr.augmentations))
if (HULK in usr.mutations)
usr << "\blue You easily destroy the [name]."
for(var/mob/O in oviewers(src))
O.show_message("\red [usr] destroys the [name]!", 1)
@@ -414,23 +414,21 @@ Alien plants should do something if theres a lot of poison
return
proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
var/obj/item/clothing/mask/facehugger/child = GetFacehugger()
icon_state = "egg_hatched"
flick("egg_opening", src)
status = BURSTING
spawn(15)
status = BURST
loc.contents += child//need to write the code for giving it to the alien later
if(kill && istype(child))
child.Die()
else
for(var/mob/M in range(1,src))
if(CanHug(M))
child.Attach(M)
break
return
if(status == GROWN || status == GROWING)
var/obj/item/clothing/mask/facehugger/child = GetFacehugger()
icon_state = "egg_hatched"
flick("egg_opening", src)
status = BURSTING
spawn(15)
status = BURST
loc.contents += child//need to write the code for giving it to the alien later
if(kill && istype(child))
child.Die()
else
for(var/mob/M in range(1,src))
if(CanHug(M))
child.Attach(M)
break
/obj/effect/alien/egg/bullet_act(var/obj/item/projectile/Proj)
+3 -1
View File
@@ -1,3 +1,4 @@
/*
/obj/effect/biomass
icon = 'icons/obj/biomass.dmi'
icon_state = "stage1"
@@ -121,4 +122,5 @@
return 0
if(location.density)
return 0
return 1
return 1
*/
+1 -1
View File
@@ -985,7 +985,7 @@ steam.start() -- spawns the effect
return
attack_hand(var/mob/user)
if ((HULK in user.mutations) || (prob(75 - metal*25)) || (SUPRSTR in user.augmentations))
if ((HULK in user.mutations) || (prob(75 - metal*25)))
user << "\blue You smash through the metal foam wall."
for(var/mob/O in oviewers(user))
if ((O.client && !( O.blinded )))
+199
View File
@@ -0,0 +1,199 @@
//generic procs copied from obj/effect/alien
/obj/effect/spider
name = "web"
desc = "it's stringy and sticky"
icon = 'icons/effects/effects.dmi'
anchored = 1
density = 0
var/health = 15
//similar to weeds, but only barfed out by nurses manually
/obj/effect/spider/ex_act(severity)
switch(severity)
if(1.0)
del(src)
if(2.0)
if (prob(50))
del(src)
if(3.0)
if (prob(5))
del(src)
return
/obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user)
if(W.attack_verb.len)
visible_message("\red <B>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]")
else
visible_message("\red <B>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]")
var/damage = W.force / 4.0
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
damage = 15
playsound(loc, 'sound/items/Welder.ogg', 100, 1)
health -= damage
healthcheck()
/obj/effect/spider/bullet_act(var/obj/item/projectile/Proj)
..()
health -= Proj.damage
healthcheck()
/obj/effect/spider/proc/healthcheck()
if(health <= 0)
del(src)
/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
health -= 5
healthcheck()
/obj/effect/spider/stickyweb
icon_state = "stickyweb1"
New()
if(prob(50))
icon_state = "stickyweb2"
/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
if(istype(mover, /mob/living/simple_animal/hostile/giant_spider))
return 1
else if(istype(mover, /mob/living))
if(prob(50))
mover << "\red You get stuck in \the [src] for a moment."
return 0
else if(istype(mover, /obj/item/projectile))
return prob(30)
return 1
/obj/effect/spider/eggcluster
name = "egg cluster"
desc = "They seem to pulse slightly with an inner life"
icon_state = "eggs"
var/amount_grown = 0
New()
pixel_x = rand(3,-3)
pixel_y = rand(3,-3)
processing_objects.Add(src)
/obj/effect/spider/eggcluster/process()
amount_grown += rand(0,2)
if(amount_grown >= 100)
var/num = rand(3,12)
for(var/i=0, i<num, i++)
new /obj/effect/spider/spiderling(src.loc)
del(src)
/obj/effect/spider/spiderling
name = "spiderling"
desc = "It never stays still for long."
icon_state = "spiderling"
anchored = 0
layer = 2.7
health = 3
var/amount_grown = 0
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
var/travelling_in_vent = 0
New()
pixel_x = rand(6,-6)
pixel_y = rand(6,-6)
processing_objects.Add(src)
/obj/effect/spider/spiderling/Bump(atom/user)
if(istype(user, /obj/structure/table))
src.loc = user.loc
else
..()
/obj/effect/spider/spiderling/proc/die()
visible_message("<span class='alert'>[src] dies!</span>")
del(src)
/obj/effect/spider/spiderling/healthcheck()
if(health <= 0)
die()
/obj/effect/spider/spiderling/process()
if(travelling_in_vent)
if(istype(src.loc, /turf))
travelling_in_vent = 0
entry_vent = null
else if(entry_vent)
if(get_dist(src, entry_vent) <= 1)
if(entry_vent.network && entry_vent.network.normal_members.len)
var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members)
vents.Add(temp_vent)
if(!vents.len)
entry_vent = null
return
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
if(prob(50))
src.visible_message("<B>[src] scrambles into the ventillation ducts!</B>")
spawn(rand(20,60))
loc = exit_vent
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
spawn(travel_time)
if(!exit_vent || exit_vent.welded)
loc = entry_vent
entry_vent = null
return
if(prob(50))
src.visible_message("\blue You hear something squeezing through the ventilation ducts.",2)
sleep(travel_time)
if(!exit_vent || exit_vent.welded)
loc = entry_vent
entry_vent = null
return
loc = exit_vent.loc
entry_vent = null
var/area/new_area = get_area(loc)
if(new_area)
new_area.Entered(src)
else
entry_vent = null
//=================
else if(prob(33))
var/list/nearby = oview(10, src)
if(nearby.len)
var/target_atom = pick(nearby)
walk_to(src, target_atom)
if(prob(40))
src.visible_message("\blue \the [src] skitters[pick(" away"," around","")].")
else if(prob(10))
//ventcrawl!
for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src))
if(!v.welded)
entry_vent = v
walk_to(src, entry_vent, 1)
break
if(isturf(loc))
amount_grown += rand(0,2)
if(amount_grown >= 100)
var/spawn_type = pick(typesof(/mob/living/simple_animal/hostile/giant_spider))
new spawn_type(src.loc)
del(src)
/obj/effect/spider/cocoon
name = "cocoon"
desc = "Something wrapped in silky spider web"
icon_state = "cocoon1"
health = 60
New()
icon_state = pick("cocoon1","cocoon2","cocoon3")
/obj/effect/spider/cocoon/Del()
src.visible_message("\red \the [src] splits open.")
for(var/atom/movable/A in contents)
A.loc = src.loc
..()
+5
View File
@@ -10,6 +10,11 @@
proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1)
src = null //so we don't abort once src is deleted
spawn(0)
if(config.use_recursive_explosions)
var/power = devastation_range * 2 + heavy_impact_range + light_impact_range //The ranges add up, ie light 14 includes both heavy 7 and devestation 3. So this calculation means devestation counts for 4, heavy for 2 and light for 1 power, giving us a cap of 27 power.
explosion_rec(epicenter, power)
return
var/start = world.timeofday
epicenter = get_turf(epicenter)
if(!epicenter) return
+5 -1
View File
@@ -66,7 +66,11 @@ proc/explosion_rec(turf/epicenter, power)
if(ET.max_power <= 0) continue
if(!ET.turf) continue
var/severity = 4 - round(max(min( 3, (ET.max_power / 3) ) ,1), 1)
//Wow severity looks confusing to calculate... Fret not, I didn't leave you with any additional instructions or help. (just kidding, see the line under the calculation)
var/severity = 4 - round(max(min( 3, ((ET.max_power - ET.turf.explosion_resistance) / (max(3,(power/3)))) ) ,1), 1)
//sanity effective power on tile divided by either 3 or one third the total explosion power
// One third because there are three power levels and I
// want each one to take up a third of the crater
var/x = ET.turf.x
var/y = ET.turf.y
var/z = ET.turf.z
+7 -7
View File
@@ -13,7 +13,7 @@
flags = FPRINT | TABLEPASS
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
pass_flags = PASSTABLE
pressure_resistance = 50
pressure_resistance = 5
// causeerrorheresoifixthis
var/obj/item/master = null
@@ -63,11 +63,11 @@
//user: The mob that is suiciding
//damagetype: The type of damage the item will inflict on the user
//bruteloss = 1
//fireloss = 2
//toxloss = 4
//oxyloss = 8
//This proc will return an array. The first element of the list should always be the suicide message that players will see, next is the damagetype
//BRUTELOSS = 1
//FIRELOSS = 2
//TOXLOSS = 4
//OXYLOSS = 8
//Output a creative message and then return the damagetype done
/obj/item/proc/suicide_act(mob/user)
return
@@ -243,7 +243,7 @@
/////////////////////////
var/power = src.force
if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
if(HULK in user.mutations)
power *= 2
if(!istype(M, /mob/living/carbon/human))
+1
View File
@@ -129,6 +129,7 @@ move an amendment</a> to the drawing.</p>
A.power_equip = 0
A.power_light = 0
A.power_environ = 0
A.always_unpowered = 0
move_turfs_to_area(turfs, A)
spawn(5)
//ma = A.master ? "[A.master]" : "(null)"
@@ -4,7 +4,7 @@
icon_state = "intercom"
anchored = 1
w_class = 4.0
canhear_range = 4
canhear_range = 2
var/number = 0
var/anyai = 1
var/mob/living/silicon/ai/ai = list()
@@ -595,7 +595,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
/obj/item/device/radio/hear_talk(mob/M as mob, msg)
if (broadcasting)
talk_into(M, msg)
if(get_dist(src, M) <= canhear_range)
talk_into(M, msg)
/*
/obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message)
+2 -2
View File
@@ -369,7 +369,7 @@
var/colourName = "red" //for updateIcon purposes
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is jaming the [src] up \his nose and into \his brain. It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.</b>"
return (BRUTELOSS|OXYLOSS)
/*
@@ -574,4 +574,4 @@
desc = "This baby looks almost real. Wait, did it just burp?"
force = 5
w_class = 4.0
slot_flags = SLOT_BACK
slot_flags = SLOT_BACK
@@ -4,7 +4,7 @@
icon = 'icons/obj/flamethrower.dmi'
icon_state = "flamethrowerbase"
item_state = "flamethrower_0"
flags = FPRINT | TABLEPASS| CONDUCT
flags = FPRINT | TABLEPASS| CONDUCT | USEDELAY // USEDELAY flag needed in order to use afterattack() for things that are not in reach. I.E: Shooting flames.
force = 3.0
throwforce = 10.0
throw_speed = 1
@@ -60,6 +60,13 @@
item_state = "flamethrower_0"
return
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag)
// Make sure our user is still holding us
if(user && user.get_active_hand() == src)
var/turf/target_turf = get_turf(target)
if(target_turf)
var/turflist = getline(user, target_turf)
flame_turf(turflist)
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
if(user.stat || user.restrained() || user.lying) return
@@ -13,7 +13,6 @@
icon = 'icons/obj/items.dmi'
icon_state = "gift1"
item_state = "gift1"
pressure_resistance = 70
/obj/item/weapon/a_gift/New()
..()
@@ -1,186 +0,0 @@
/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 changes 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)
if(!istype(M, /mob/living/carbon/human)) return 0
M.augmentations.Add(augmentation) // give them the mutation
M << "\blue [augment_text]"
return 1
/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."
implanted(mob/M)
if(..())
M << "<font color='#FF0000'>Red</font color> blips on the map are Security."
M << "White blips are civlians."
M << "<font color='#3E710B'>Monochrome Green</font color> blips are cyborgs and AIs."
M << "<font color='#238989'>Light blue</font color> blips are heads of staff."
M << "<font color='#663366'>Purple</font color> blips are unidentified organisms."
M << "Dead biologicals will not display on the radar."
spawn()
var/mob/living/carbon/human/H = M
H.start_radar()
return 1
return 0
/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."
implanted(mob/M)
if(..())
activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
M.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)
M << "The nanoaugmentation implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
return 1
return 0
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_hands(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()
@@ -34,12 +34,7 @@
src.add_fingerprint(user)
update()
else
if (user.contents.Find(src))
spawn( 0 )
src.attack_self(user)
return
else
return ..()
return ..()
return
+6 -6
View File
@@ -82,9 +82,9 @@
throwforce = 10.0
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src]! It looks like \he's trying to commit seppuku.</b>")
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>")
return (BRUTELOSS)
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
@@ -114,9 +114,9 @@
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src]! It looks like \he's trying to commit seppuku.</b>")
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>")
return (BRUTELOSS)
/obj/item/weapon/kitchenknife/ritual
@@ -2,8 +2,8 @@
var/active = 0
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his stomach open with the [src]! It looks like \he's trying to commit seppuku.</b>", \
"\red <b>[user] is falling on the [src]! It looks like \he's trying to commit suicide.</b>")
viewers(user) << pick("\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>", \
"\red <b>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</b>")
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/melee/energy/axe
@@ -20,7 +20,7 @@
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] swings the [src] towards /his head! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] swings the [src.name] towards /his head! It looks like \he's trying to commit suicide.</b>"
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/melee/energy/sword
@@ -12,5 +12,5 @@
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is strangling \himself with the [src]! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</b>"
return (OXYLOSS)
@@ -11,7 +11,6 @@
throw_speed = 3
throw_range = 5
w_class = 3.0
pressure_resistance = 80
var/charge = 0 // note %age conveted to actual charge in New
var/maxcharge = 1000
m_amt = 700
@@ -22,7 +21,7 @@
var/construction_time=100
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is licking the electrodes of the [src]! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.</b>"
return (FIRELOSS)
/obj/item/weapon/cell/crap
+14 -4
View File
@@ -69,12 +69,22 @@
user <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."
return
var/attempt = 0
if(user && user.buckled)
user.buckled.unbuckle()
var/list/tempL = L
var/attempt = null
var/success = 0
while(!success)
success = user.Move(pick(L))
if(attempt > 20) break //Failsafe
while(tempL.len)
attempt = pick(tempL)
success = user.Move(attempt)
if(!success)
tempL.Remove(attempt)
else
break
if(!success)
user.loc = pick(L)
smoke.start()
src.uses -= 1
@@ -1,8 +1,8 @@
/obj/item/weapon/storage/box/syndicate/
New()
..()
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1)))
if ("bloodyspai")
switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1, "smoothoperator" = 1)))
if("bloodyspai")
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/mask/gas/voice(src)
new /obj/item/weapon/card/id/syndicate(src)
@@ -10,12 +10,13 @@
return
if ("stealth")
if("stealth")
new /obj/item/weapon/gun/energy/crossbow(src)
new /obj/item/weapon/pen/paralysis(src)
new /obj/item/device/chameleon(src)
return
if ("screwed")
if("screwed")
new /obj/effect/spawner/newbomb/timer/syndicate(src)
new /obj/effect/spawner/newbomb/timer/syndicate(src)
new /obj/item/device/powersink(src)
@@ -23,14 +24,14 @@
new /obj/item/clothing/head/helmet/space/syndicate(src)
return
if ("guns")
if("guns")
new /obj/item/weapon/gun/projectile(src)
new /obj/item/ammo_magazine/a357(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/weapon/plastique(src)
return
if ("murder")
if("murder")
new /obj/item/weapon/melee/energy/sword(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/weapon/card/emag(src)
@@ -44,19 +45,29 @@
U.imp = new /obj/item/weapon/implant/uplink(U)
return
if ("hacker")
if("hacker")
new /obj/item/weapon/aiModule/syndicate(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/device/encryptionkey/binary(src)
return
if ("lordsingulo")
if("lordsingulo")
new /obj/item/device/radio/beacon/syndicate(src)
new /obj/item/clothing/suit/space/syndicate(src)
new /obj/item/clothing/head/helmet/space/syndicate(src)
new /obj/item/weapon/card/emag(src)
return
if("smoothoperator")
new /obj/item/weapon/gun/projectile/pistol(src)
new /obj/item/weapon/silencer(src)
new /obj/item/weapon/soap/syndie(src)
new /obj/item/weapon/storage/bag/trash(src)
new /obj/item/bodybag(src)
new /obj/item/clothing/under/suit_jacket(src)
new /obj/item/clothing/shoes/laceup(src)
return
/obj/item/weapon/storage/box/syndie_kit
name = "Box"
desc = "A sleek, sturdy box"
+2 -2
View File
@@ -15,7 +15,7 @@
origin_tech = "combat=2"
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is putting the live [src] in \his mouth! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is putting the live [src.name] in \his mouth! It looks like \he's trying to commit suicide.</b>"
return (FIRELOSS)
/obj/item/weapon/melee/baton/update_icon()
@@ -60,7 +60,7 @@
if(user.a_intent == "hurt")
if(!..()) return
H.apply_effect(5, WEAKEN, 0)
//H.apply_effect(5, WEAKEN, 0)
H.visible_message("<span class='danger'>[M] has been beaten with the [src] by [user]!</span>")
playsound(src.loc, "swing_hit", 50, 1, -1)
else if(!status)
@@ -365,8 +365,8 @@ LOOK FOR SURGERY.DM*/
attack_verb = list("drilled")
suicide_act(mob/user)
viewers(user) << pick("/red <b>[user] is pressing the [src] to \his temple and activating it! It looks like \he's trying to commit suicide.</b>", \
"/red <b>[user] is pressing [src] to \his chest and activating it! It looks like \he's trying to commit suicide.</b>")
viewers(user) << pick("/red <b>[user] is pressing the [src.name] to \his temple and activating it! It looks like \he's trying to commit suicide.</b>", \
"/red <b>[user] is pressing [src.name] to \his chest and activating it! It looks like \he's trying to commit suicide.</b>")
return (BRUTELOSS)
/*
@@ -389,9 +389,9 @@ LOOK FOR SURGERY.DM*/
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src]! It looks like \he's trying to commit seppuku.</b>")
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>")
return (BRUTELOSS)
/*
@@ -492,7 +492,7 @@ LOOK FOR SURGERY.DM*/
if(istype(M, /mob/living/carbon/slime))
if(M.stat == 2)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M.name] is having its silky inndards cut apart with [src] by [user].", 1)
O.show_message("\red [M.name] is having its silky innards cut apart with [src] by [user].", 1)
M << "\red [user] begins to cut apart your innards with [src]!"
user << "\red You cut [M]'s silky innards apart with [src]!"
M:brain_op_stage = 2.0
+2 -2
View File
@@ -49,8 +49,8 @@
attack_verb = list("stabbed")
suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is stabbing the [src] into \his temple! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is stabbing the [src] into \his heart! It looks like \he's trying to commit suicide.</b>")
viewers(user) << pick("\red <b>[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.</b>")
return(BRUTELOSS)
/obj/item/weapon/screwdriver/New()
+5 -5
View File
@@ -12,7 +12,7 @@
attack_verb = list("banned")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is hitting \himself with the [src]! It looks like \he's trying to ban \himself from life.</b>"
viewers(user) << "\red <b>[user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life.</b>"
return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS)
/obj/item/weapon/nullrod
@@ -29,7 +29,7 @@
w_class = 1
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is impaling \himself with the [src]! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.</b>"
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/sord
@@ -45,7 +45,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is impaling \himself with the [src]! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.</b>"
return(BRUTELOSS)
/obj/item/weapon/sord/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
@@ -68,7 +68,7 @@
return 1
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is falling on the [src]! It looks like \he's trying to commit suicide.</b>"
viewers(user) << "\red <b>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</b>"
return(BRUTELOSS)
/obj/item/weapon/claymore/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
@@ -88,7 +88,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is slitting \his stomach open with the [src]! It looks like \he's trying to commit seppuku.</b>"
viewers(user) << "\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>"
return(BRUTELOSS)
/obj/item/weapon/katana/IsShield()
@@ -160,6 +160,38 @@
return
/obj/structure/closet/secure_closet/security/cargo
New()
..()
new /obj/item/clothing/tie/armband/cargo(src)
new /obj/item/device/encryptionkey/headset_cargo(src)
return
/obj/structure/closet/secure_closet/security/engine
New()
..()
new /obj/item/clothing/tie/armband/engine(src)
new /obj/item/device/encryptionkey/headset_eng(src)
return
/obj/structure/closet/secure_closet/security/science
New()
..()
new /obj/item/clothing/tie/armband/science(src)
new /obj/item/device/encryptionkey/headset_sci(src)
return
/obj/structure/closet/secure_closet/security/med
New()
..()
new /obj/item/clothing/tie/armband/medgreen(src)
new /obj/item/device/encryptionkey/headset_med(src)
return
/obj/structure/closet/secure_closet/detective
name = "Detective's Cabinet"
@@ -205,7 +237,7 @@
/obj/structure/closet/secure_closet/injection
name = "Lethal Injections"
req_access = list(access_hos)
req_access = list(access_captain)
New()
@@ -32,5 +32,33 @@
/obj/structure/largecrate/lisa/attackby(obj/item/weapon/W as obj, mob/user as mob) //ugly but oh well
if(istype(W, /obj/item/weapon/crowbar))
new /mob/living/simple_animal/corgi/Lisa(loc)
..()
..()
/obj/structure/largecrate/cow
name = "cow crate"
icon_state = "lisacrate"
/obj/structure/largecrate/cow/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
new /mob/living/simple_animal/cow(loc)
..()
/obj/structure/largecrate/goat
name = "goat crate"
icon_state = "lisacrate"
/obj/structure/largecrate/goat/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
new /mob/living/simple_animal/hostile/retaliate/goat(loc)
..()
/obj/structure/largecrate/chick
name = "chicken crate"
icon_state = "lisacrate"
/obj/structure/largecrate/chick/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
var/num = rand(4, 6)
for(var/i = 0, i < num, i++)
new /mob/living/simple_animal/chick(loc)
..()
+1 -1
View File
@@ -38,7 +38,7 @@
if(shock(user, 70))
return
if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
if(HULK in user.mutations)
health -= 5
else
health -= 3
+1 -1
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/janitor.dmi'
icon_state = "mopbucket"
density = 1
pressure_resistance = ONE_ATMOSPHERE
pressure_resistance = 5
flags = FPRINT | TABLEPASS | OPENCONTAINER
var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite
+5
View File
@@ -92,6 +92,11 @@
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here.'"
icon_state = "redcross"
/obj/structure/sign/greencross
name = "medbay"
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here.'"
icon_state = "greencross"
/obj/structure/sign/goldenplaque
name = "The Most Robust Men Award for Robustness"
desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends."
@@ -67,6 +67,10 @@
if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || user.lying || user.stat || M.buckled || istype(user, /mob/living/silicon/pai) )
return
if (istype(M, /mob/living/carbon/slime))
user << "The [M] is too squishy to buckle in."
return
unbuckle()
if (M == usr)
@@ -147,4 +151,4 @@
new/obj/item/roller(get_turf(src))
spawn(0)
del(src)
return
return
@@ -52,14 +52,19 @@
set category = "Object"
set src in oview(1)
if(!usr || !isturf(usr.loc))
return
if(usr.stat || usr.restrained())
if(config.ghost_interaction)
src.dir = turn(src.dir, 90)
handle_rotation()
return
else
if(!usr || !isturf(usr.loc))
return
if(usr.stat || usr.restrained())
return
src.dir = turn(src.dir, 90)
handle_rotation()
return
src.dir = turn(src.dir, 90)
handle_rotation()
return
/obj/structure/stool/bed/chair/MouseDrop_T(mob/M as mob, mob/user as mob)
if(!istype(M)) return
@@ -5,7 +5,7 @@
icon_state = "stool"
anchored = 1.0
flags = FPRINT
pressure_resistance = 3*ONE_ATMOSPHERE
pressure_resistance = 15
/obj/structure/stool/ex_act(severity)
switch(severity)
+2 -2
View File
@@ -282,7 +282,7 @@
/obj/structure/table/attack_hand(mob/user)
if(HULK in user.mutations || SUPRSTR in user.augmentations)
if(HULK in user.mutations)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
if(istype(src, /obj/structure/table/reinforced))
@@ -562,7 +562,7 @@
/obj/structure/table/attack_hand(mob/user)
if(HULK in user.mutations || SUPRSTR in user.augmentations)
if(HULK in user.mutations)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
new /obj/item/weapon/rack_parts(loc)
+1 -1
View File
@@ -98,7 +98,7 @@
/obj/structure/window/attack_hand(mob/user as mob)
if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
new /obj/item/weapon/shard(loc)