modified: _maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm

modified:   _maps/RandomZLevels/Academy.dmm
 	modified:   _maps/RandomZLevels/caves.dmm
 	modified:   _maps/RandomZLevels/research.dmm
 	modified:   _maps/map_files/MetaStation/MetaStation.dmm
 	modified:   _maps/map_files/MiniStation/cargopacks.dm
 	modified:   _maps/map_files/TgStation/tgstation.2.1.3.dmm
 	modified:   _maps/map_files/generic/z2.dmm
 	modified:   code/__DEFINES/clothing.dm
 	modified:   code/__DEFINES/flags.dm
 	modified:   code/__DEFINES/hud.dm
 	modified:   code/__DEFINES/is_helpers.dm
 	modified:   code/__DEFINES/layers.dm
 	modified:   code/__DEFINES/machines.dm
 	modified:   code/__DEFINES/misc.dm
 	modified:   code/__DEFINES/role_preferences.dm
 	modified:   code/__DEFINES/say.dm
 	modified:   code/__DEFINES/wires.dm
 	modified:   code/__HELPERS/global_lists.dm
 	modified:   code/__HELPERS/matrices.dm
 	modified:   code/__HELPERS/mobs.dm
 	modified:   code/__HELPERS/type2type.dm
 	modified:   code/__HELPERS/unsorted.dm
 	modified:   code/_globalvars/lists/flavor_misc.dm
 	modified:   code/_onclick/click.dm
 	modified:   code/_onclick/hud/_defines.dm
 	modified:   code/_onclick/hud/alien.dm
 	modified:   code/_onclick/hud/alien_larva.dm
 	modified:   code/_onclick/hud/fullscreen.dm
 	modified:   code/_onclick/hud/hud.dm
 	modified:   code/_onclick/hud/human.dm
 	modified:   code/_onclick/hud/monkey.dm
 	modified:   code/_onclick/hud/other_mobs.dm
 	modified:   code/_onclick/hud/robot.dm
 	modified:   code/_onclick/hud/screen_objects.dm
 	modified:   code/controllers/subsystem/minimap.dm
 	new file:   code/controllers/subsystem/orbit.dm
 	modified:   code/controllers/subsystem/spacedrift.dm
 	modified:   code/controllers/subsystem/ticker.dm
 	modified:   code/datums/diseases/advance/advance.dm
 	modified:   code/datums/diseases/advance/symptoms/damage_converter.dm
 	modified:   code/datums/diseases/advance/symptoms/heal.dm
 	modified:   code/datums/hud.dm
 	modified:   code/datums/mind.dm
 	modified:   code/datums/outfit.dm
 	modified:   code/datums/wires/airalarm.dm
 	modified:   code/datums/wires/airlock.dm
 	modified:   code/datums/wires/apc.dm
 	modified:   code/datums/wires/autolathe.dm
 	modified:   code/datums/wires/explosive.dm
 	modified:   code/datums/wires/particle_accelerator.dm
 	modified:   code/datums/wires/radio.dm
 	modified:   code/datums/wires/suit_storage_unit.dm
 	modified:   code/datums/wires/vending.dm
 	modified:   code/datums/wires/wires.dm
 	modified:   code/game/area/Space_Station_13_areas.dm
 	modified:   code/game/area/areas.dm
 	modified:   code/game/atoms_movable.dm
 	modified:   code/game/data_huds.dm
 	modified:   code/game/gamemodes/antag_spawner.dm
 	modified:   code/game/gamemodes/blob/blob.dm
 	modified:   code/game/gamemodes/blob/blobs/core.dm
 	modified:   code/game/gamemodes/clock_cult/clock_items.dm
 	modified:   code/game/gamemodes/clock_cult/clock_machines.dm
 	modified:   code/game/gamemodes/clock_cult/clock_mobs.dm
 	new file:   code/game/gamemodes/clock_cult/clock_powerdrain.dm
 	modified:   code/game/gamemodes/clock_cult/clock_scripture.dm
 	modified:   code/game/gamemodes/clock_cult/clock_structures.dm
 	modified:   code/game/gamemodes/cult/ritual.dm
 	modified:   code/game/gamemodes/cult/runes.dm
 	modified:   code/game/gamemodes/cult/talisman.dm
 	modified:   code/game/gamemodes/game_mode.dm
 	deleted:    code/game/gamemodes/handofgod/_handofgod.dm
 	deleted:    code/game/gamemodes/handofgod/actions.dm
 	deleted:    code/game/gamemodes/handofgod/god.dm
 	deleted:    code/game/gamemodes/handofgod/objectives.dm
 	deleted:    code/game/gamemodes/handofgod/powers.dm
 	deleted:    code/game/gamemodes/handofgod/structures.dm
 	modified:   code/game/gamemodes/miniantags/abduction/abduction_gear.dm
 	modified:   code/game/gamemodes/miniantags/revenant/revenant_blight.dm
 	modified:   code/game/gamemodes/miniantags/slaughter/slaughter.dm
 	modified:   code/game/gamemodes/nuclear/nuclearbomb.dm
 	modified:   code/game/gamemodes/wizard/soulstone.dm
 	modified:   code/game/machinery/computer/computer.dm
 	modified:   code/game/machinery/doors/windowdoor.dm
 	new file:   code/game/machinery/limbgrower.dm
 	modified:   code/game/machinery/machinery.dm
 	modified:   code/game/machinery/recharger.dm
 	modified:   code/game/machinery/syndicatebomb.dm
 	modified:   code/game/machinery/vending.dm
 	modified:   code/game/mecha/mecha_defense.dm
 	modified:   code/game/mecha/working/ripley.dm
 	modified:   code/game/objects/effects/decals/Cleanable/aliens.dm
 	modified:   code/game/objects/effects/decals/Cleanable/humans.dm
 	modified:   code/game/objects/effects/decals/Cleanable/misc.dm
 	modified:   code/game/objects/effects/decals/Cleanable/robots.dm
 	modified:   code/game/objects/effects/decals/cleanable.dm
 	modified:   code/game/objects/effects/decals/crayon.dm
 	modified:   code/game/objects/effects/effect_system/effects_smoke.dm
 	modified:   code/game/objects/effects/overlays.dm
 	modified:   code/game/objects/effects/step_triggers.dm
 	modified:   code/game/objects/items.dm
 	modified:   code/game/objects/items/blueprints.dm
 	modified:   code/game/objects/items/devices/PDA/PDA.dm
 	modified:   code/game/objects/items/devices/chameleonproj.dm
 	modified:   code/game/objects/items/devices/megaphone.dm
 	renamed:    code/game/gamemodes/handofgod/items.dm -> code/game/objects/items/religion.dm
 	modified:   code/game/objects/items/robot/robot_items.dm
 	modified:   code/game/objects/items/stacks/stack.dm
 	modified:   code/game/objects/items/weapons/cigs_lighters.dm
 	modified:   code/game/objects/items/weapons/grenades/grenade.dm
 	modified:   code/game/objects/items/weapons/grenades/spawnergrenade.dm
 	modified:   code/game/objects/items/weapons/implants/implant_loyality.dm
 	modified:   code/game/objects/items/weapons/kitchen.dm
 	modified:   code/game/objects/items/weapons/melee/energy.dm
 	modified:   code/game/objects/items/weapons/melee/misc.dm
 	modified:   code/game/objects/items/weapons/mop.dm
 	modified:   code/game/objects/items/weapons/storage/belt.dm
 	modified:   code/game/objects/items/weapons/storage/uplink_kits.dm
 	modified:   code/game/objects/items/weapons/tools.dm
 	modified:   code/game/objects/items/weapons/vending_items.dm
 	modified:   code/game/objects/items/weapons/weaponry.dm
 	modified:   code/game/objects/objs.dm
 	modified:   code/game/objects/structures/crates_lockers/closets/fitness.dm
 	new file:   code/game/objects/structures/divine.dm
 	modified:   code/game/objects/structures/flora.dm
 	modified:   code/game/objects/structures/fluff.dm
 	modified:   code/game/objects/structures/grille.dm
 	modified:   code/game/objects/structures/kitchen_spike.dm
 	modified:   code/game/objects/structures/tables_racks.dm
 	renamed:    code/game/gamemodes/handofgod/traps.dm -> code/game/objects/structures/traps.dm
 	modified:   code/game/objects/structures/window.dm
 	modified:   code/game/turfs/simulated/dirtystation.dm
 	modified:   code/game/turfs/simulated/floor/fancy_floor.dm
 	modified:   code/game/turfs/simulated/floor/light_floor.dm
 	modified:   code/game/turfs/simulated/floor/misc_floor.dm
 	modified:   code/game/turfs/simulated/floor/plating.dm
 	modified:   code/game/turfs/turf.dm
 	modified:   code/modules/admin/player_panel.dm
 	modified:   code/modules/admin/verbs/onlyone.dm
 	modified:   code/modules/admin/verbs/pray.dm
 	modified:   code/modules/assembly/flash.dm
 	modified:   code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
 	modified:   code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
 	modified:   code/modules/awaymissions/capture_the_flag.dm
 	modified:   code/modules/cargo/packs.dm
 	modified:   code/modules/client/client_colour.dm
 	modified:   code/modules/client/preferences.dm
 	modified:   code/modules/client/preferences_savefile.dm
 	modified:   code/modules/clothing/clothing.dm
 	modified:   code/modules/clothing/glasses/glasses.dm
 	modified:   code/modules/clothing/glasses/hud.dm
 	modified:   code/modules/clothing/spacesuits/hardsuit.dm
 	modified:   code/modules/clothing/suits/miscellaneous.dm
 	modified:   code/modules/clothing/suits/wiz_robe.dm
 	modified:   code/modules/clothing/under/jobs/civilian.dm
 	modified:   code/modules/clothing/under/shorts.dm
 	modified:   code/modules/events/holiday/halloween.dm
 	modified:   code/modules/events/shuttle_loan.dm
 	modified:   code/modules/food_and_drinks/food/snacks/meat.dm
 	modified:   code/modules/food_and_drinks/food/snacks_burgers.dm
 	modified:   code/modules/food_and_drinks/food/snacks_other.dm
 	modified:   code/modules/food_and_drinks/kitchen_machinery/processor.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
 	modified:   code/modules/holodeck/areas.dm
 	modified:   code/modules/holodeck/turfs.dm
 	modified:   code/modules/jobs/job_types/cargo_service.dm
 	modified:   code/modules/mining/abandoned_crates.dm
 	modified:   code/modules/mining/lavaland/necropolis_chests.dm
 	modified:   code/modules/mining/machine_vending.dm
 	modified:   code/modules/mining/mine_areas.dm
 	modified:   code/modules/mining/mine_turfs.dm
 	modified:   code/modules/mob/dead/observer/observer.dm
 	modified:   code/modules/mob/inventory.dm
 	modified:   code/modules/mob/living/carbon/alien/larva/life.dm
 	modified:   code/modules/mob/living/carbon/carbon.dm
 	modified:   code/modules/mob/living/carbon/carbon_defense.dm
 	modified:   code/modules/mob/living/carbon/human/human_defense.dm
 	modified:   code/modules/mob/living/carbon/human/inventory.dm
 	modified:   code/modules/mob/living/carbon/human/life.dm
 	modified:   code/modules/mob/living/carbon/human/species.dm
 	modified:   code/modules/mob/living/carbon/human/species_types.dm
 	modified:   code/modules/mob/living/carbon/human/update_icons.dm
 	modified:   code/modules/mob/living/carbon/inventory.dm
 	modified:   code/modules/mob/living/carbon/life.dm
 	modified:   code/modules/mob/living/carbon/monkey/punpun.dm
 	modified:   code/modules/mob/living/carbon/say.dm
 	modified:   code/modules/mob/living/carbon/update_icons.dm
 	modified:   code/modules/mob/living/death.dm
 	modified:   code/modules/mob/living/life.dm
 	modified:   code/modules/mob/living/living.dm
 	modified:   code/modules/mob/living/say.dm
 	modified:   code/modules/mob/living/silicon/ai/life.dm
 	modified:   code/modules/mob/living/silicon/login.dm
 	modified:   code/modules/mob/living/silicon/pai/life.dm
 	modified:   code/modules/mob/living/silicon/robot/login.dm
 	modified:   code/modules/mob/living/silicon/robot/robot.dm
 	modified:   code/modules/mob/living/silicon/robot/robot_modules.dm
 	modified:   code/modules/mob/living/simple_animal/friendly/cockroach.dm
 	modified:   code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/hostile.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/skeleton.dm
 	modified:   code/modules/mob/living/simple_animal/simple_animal.dm
 	modified:   code/modules/mob/mob.dm
 	modified:   code/modules/mob/mob_helpers.dm
 	modified:   code/modules/mob/new_player/new_player.dm
 	modified:   code/modules/mob/new_player/sprite_accessories.dm
 	modified:   code/modules/mob/transform_procs.dm
 	modified:   code/modules/modular_computers/computers/item/computer.dm
 	modified:   code/modules/modular_computers/computers/item/computer_components.dm
 	modified:   code/modules/modular_computers/computers/item/computer_damage.dm
 	modified:   code/modules/modular_computers/computers/item/computer_power.dm
 	modified:   code/modules/modular_computers/computers/item/computer_ui.dm
 	modified:   code/modules/modular_computers/computers/item/processor.dm
 	modified:   code/modules/modular_computers/computers/item/tablet.dm
 	modified:   code/modules/modular_computers/computers/machinery/console_presets.dm
 	modified:   code/modules/modular_computers/computers/machinery/modular_computer.dm
 	modified:   code/modules/modular_computers/computers/machinery/modular_console.dm
 	deleted:    code/modules/modular_computers/documentation.dm
 	new file:   code/modules/modular_computers/documentation.md
 	modified:   code/modules/modular_computers/file_system/program.dm
 	modified:   code/modules/modular_computers/file_system/programs/antagonist/dos.dm
 	modified:   code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
 	modified:   code/modules/modular_computers/file_system/programs/card.dm
 	modified:   code/modules/modular_computers/file_system/programs/configurator.dm
 	modified:   code/modules/modular_computers/file_system/programs/file_browser.dm
 	modified:   code/modules/modular_computers/file_system/programs/ntdownloader.dm
 	modified:   code/modules/modular_computers/file_system/programs/ntnrc_client.dm
 	modified:   code/modules/modular_computers/file_system/programs/nttransfer.dm
 	modified:   code/modules/modular_computers/hardware/CPU.dm
 	modified:   code/modules/modular_computers/hardware/_hardware.dm
 	modified:   code/modules/modular_computers/hardware/battery_module.dm
 	modified:   code/modules/modular_computers/hardware/card_slot.dm
 	modified:   code/modules/modular_computers/hardware/hard_drive.dm
 	modified:   code/modules/modular_computers/hardware/network_card.dm
 	modified:   code/modules/modular_computers/hardware/portable_disk.dm
 	modified:   code/modules/modular_computers/hardware/printer.dm
 	modified:   code/modules/modular_computers/hardware/recharger.dm
 	modified:   code/modules/modular_computers/laptop_vendor.dm
 	new file:   code/modules/orbit/orbit.dm
 	modified:   code/modules/power/lighting.dm
 	modified:   code/modules/power/supermatter/supermatter.dm
 	modified:   code/modules/power/tesla/coil.dm
 	modified:   code/modules/power/tesla/energy_ball.dm
 	modified:   code/modules/projectiles/ammunition.dm
 	modified:   code/modules/projectiles/ammunition/ammo_casings.dm
 	modified:   code/modules/projectiles/ammunition/energy.dm
 	modified:   code/modules/projectiles/ammunition/special.dm
 	modified:   code/modules/projectiles/firing.dm
 	modified:   code/modules/projectiles/guns/energy/kinetic_accelerator.dm
 	modified:   code/modules/projectiles/guns/energy/stun.dm
 	modified:   code/modules/projectiles/projectile.dm
 	modified:   code/modules/projectiles/projectile/beams.dm
 	modified:   code/modules/projectiles/projectile/bullets.dm
 	modified:   code/modules/projectiles/projectile/energy.dm
 	modified:   code/modules/projectiles/projectile/reusable.dm
 	modified:   code/modules/projectiles/projectile/special.dm
 	modified:   code/modules/reagents/chemistry/machinery/pandemic.dm
 	modified:   code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/drink_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/other_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/toxin_reagents.dm
 	modified:   code/modules/reagents/chemistry/recipes.dm
 	modified:   code/modules/reagents/chemistry/recipes/pyrotechnics.dm
 	modified:   code/modules/reagents/chemistry/recipes/toxins.dm
 	modified:   code/modules/reagents/reagent_containers/glass.dm
 	new file:   code/modules/research/designs/limbgrower_designs.dm
 	modified:   code/modules/research/designs/weapon_designs.dm
 	modified:   code/modules/research/research.dm
 	modified:   code/modules/stock_market/computer.dm
 	modified:   code/modules/surgery/bodyparts/bodyparts.dm
 	modified:   code/modules/surgery/bodyparts/dismemberment.dm
 	modified:   code/modules/surgery/bodyparts/helpers.dm
 	modified:   code/modules/surgery/organs/augments_arms.dm
 	modified:   code/modules/surgery/organs/augments_chest.dm
 	modified:   code/modules/surgery/organs/organ_internal.dm
 	modified:   config/tips.txt
 	modified:   html/changelog.html
 	modified:   html/changelogs/.all_changelog.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20404.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20419.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20447.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20467.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20479.yml
 	modified:   icons/effects/blood.dmi
 	new file:   icons/effects/bubblegum.dmi
 	modified:   icons/effects/effects.dmi
 	modified:   icons/mob/hud.dmi
 	modified:   icons/mob/human_parts_greyscale.dmi
 	modified:   icons/mob/inhands/items_lefthand.dmi
 	modified:   icons/mob/inhands/items_righthand.dmi
 	modified:   icons/mob/mask.dmi
 	modified:   icons/mob/mutant_bodyparts.dmi
 	modified:   icons/mob/screen_gen.dmi
 	modified:   icons/mob/screen_midnight.dmi
 	modified:   icons/mob/screen_operative.dmi
 	modified:   icons/mob/screen_plasmafire.dmi
 	modified:   icons/mob/screen_retro.dmi
 	modified:   icons/mob/screen_slimecore.dmi
 	modified:   icons/mob/suit.dmi
 	modified:   icons/mob/uniform.dmi
 	modified:   icons/obj/clothing/glasses.dmi
 	modified:   icons/obj/clothing/masks.dmi
 	modified:   icons/obj/clothing/suits.dmi
 	modified:   icons/obj/food/burgerbread.dmi
 	modified:   icons/obj/food/food.dmi
 	new file:   icons/obj/machines/limbgrower.dmi
 	modified:   icons/obj/modular_tablet.dmi
 	modified:   icons/obj/projectiles.dmi
 	modified:   icons/obj/weapons.dmi
 	modified:   interface/skin.dmf
 	new file:   sound/effects/pop_expl.ogg
This commit is contained in:
ExcessiveUseOfCobblestone
2016-09-26 12:40:26 -04:00
parent e2d42a0dae
commit 5ed5566dbf
321 changed files with 4445 additions and 4560 deletions
@@ -3,9 +3,6 @@
/obj/effect/decal/cleanable/xenoblood
name = "xeno blood"
desc = "It's green and acidic. It looks like... <i>blood?</i>"
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
@@ -43,9 +40,9 @@
/obj/effect/decal/cleanable/xenoblood/xgibs
name = "xeno gibs"
desc = "Gnarly..."
gender = PLURAL
icon = 'icons/effects/blood.dmi'
icon_state = "xgib1"
layer = LOW_OBJ_LAYER
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
@@ -1,9 +1,6 @@
/obj/effect/decal/cleanable/blood
name = "blood"
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
gender = PLURAL
density = 0
layer = ABOVE_NORMAL_TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
@@ -29,16 +26,12 @@
/obj/effect/decal/cleanable/blood/tracks
icon_state = "tracks"
desc = "They look like tracks left by wheels."
gender = PLURAL
random_icon_states = null
/obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose
name = "blood"
icon_state = "ltrails_1"
desc = "Your instincts say you shouldn't be following these."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
random_icon_states = null
var/list/existing_dirs = list()
blood_DNA = list()
@@ -51,11 +44,9 @@
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
/obj/effect/decal/cleanable/blood/gibs/New()
@@ -108,7 +99,6 @@
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's red."
gender = PLURAL
icon_state = "1"
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
bloodiness = 0
@@ -125,7 +115,6 @@
icon = 'icons/effects/footprints.dmi'
icon_state = "nothingwhatsoever"
desc = "where might they lead?"
gender = PLURAL
random_icon_states = null
var/entered_dirs = 0
var/exited_dirs = 0
@@ -1,16 +1,12 @@
/obj/effect/decal/cleanable/generic
name = "clutter"
desc = "Someone should clean that up."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
/obj/effect/decal/cleanable/ash
name = "ashes"
desc = "Ashes to ashes, dust to dust, and into space."
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
@@ -24,25 +20,16 @@
name = "dirt"
desc = "Someone should clean that up."
icon_state = "dirt"
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
mouse_opacity = 0
/obj/effect/decal/cleanable/flour
name = "flour"
desc = "It's still good. Four second rule!"
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon_state = "flour"
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
luminosity = 1
icon_state = "greenglow"
@@ -52,36 +39,34 @@
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."
density = 0
layer = OBJ_LAYER
gender = NEUTER
layer = WALL_OBJ_LAYER
icon_state = "cobweb1"
burntime = 1
/obj/effect/decal/cleanable/cobweb/fire_act()
qdel(src)
/obj/effect/decal/cleanable/cobweb2
name = "cobweb"
desc = "Somebody should remove that."
gender = NEUTER
layer = WALL_OBJ_LAYER
icon_state = "cobweb2"
/obj/effect/decal/cleanable/cobweb2/fire_act()
qdel(src)
/obj/effect/decal/cleanable/molten_item
name = "gooey grey mass"
desc = "It looks like a melted... something."
density = 0
layer = OBJ_LAYER
gender = NEUTER
icon = 'icons/obj/chemical.dmi'
icon_state = "molten"
/obj/effect/decal/cleanable/cobweb2
name = "cobweb"
desc = "Somebody should remove that."
density = 0
layer = OBJ_LAYER
icon_state = "cobweb2"
//Vomit (sorry)
/obj/effect/decal/cleanable/vomit
name = "vomit"
desc = "Gosh, how unpleasant."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/effects/blood.dmi'
icon_state = "vomit_1"
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
@@ -112,38 +97,34 @@
/obj/effect/decal/cleanable/tomato_smudge
name = "tomato smudge"
desc = "It's red."
density = 0
layer = ABOVE_OPEN_TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
/obj/effect/decal/cleanable/plant_smudge
name = "plant smudge"
density = 0
layer = ABOVE_OPEN_TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_plant")
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
desc = "Seems like this one won't hatch."
density = 0
layer = ABOVE_OPEN_TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
/obj/effect/decal/cleanable/pie_smudge //honk
name = "smashed pie"
desc = "It's pie cream from a cream pie."
density = 0
layer = ABOVE_OPEN_TURF_LAYER
gender = NEUTER
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("smashed_pie")
/obj/effect/decal/cleanable/chem_pile
name = "chemical pile"
desc = "A pile of chemicals. You can't quite tell what's inside it."
gender = PLURAL
gender = NEUTER
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
@@ -152,8 +133,6 @@
desc = "The shredded remains of what appears to be clothing."
icon_state = "shreds"
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
/obj/effect/decal/cleanable/shreds/New()
pixel_x = rand(-5, 5)
@@ -165,3 +144,4 @@
desc = "A sizable pile of table salt. Someone must be upset."
icon = 'icons/effects/tomatodecal.dmi'
icon_state = "salt_pile"
gender = NEUTER
@@ -3,11 +3,9 @@
/obj/effect/decal/cleanable/robot_debris
name = "robot debris"
desc = "It's a useless heap of junk... <i>or is it?</i>"
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/mob/robots.dmi'
icon_state = "gib1"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
blood_state = BLOOD_STATE_OIL
bloodiness = MAX_SHOE_BLOODINESS
@@ -45,9 +43,6 @@
/obj/effect/decal/cleanable/oil
name = "motor oil"
desc = "It's black and greasy. Looks like Beepsky made another mess."
gender = PLURAL
density = 0
layer = ABOVE_OPEN_TURF_LAYER
icon = 'icons/mob/robots.dmi'
icon_state = "floor1"
var/viruses = list()
@@ -1,4 +1,6 @@
/obj/effect/decal/cleanable
gender = PLURAL
layer = ABOVE_NORMAL_TURF_LAYER
var/list/random_icon_states = list()
var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
+1 -7
View File
@@ -3,15 +3,9 @@
desc = "Graffiti. Damn kids."
icon = 'icons/effects/crayondecal.dmi'
icon_state = "rune1"
layer = ABOVE_NORMAL_TURF_LAYER
gender = NEUTER
var/do_icon_rotate = TRUE
/obj/effect/decal/cleanable/crayon/examine()
set src in view(2)
..()
return
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null)
..()
loc = location
@@ -287,10 +287,10 @@
var/more = ""
if(M)
more = "(<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</a>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</A>) "
message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1)
message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else
message_admins("A chemical smoke reaction has taken place in ([whereLink]). No associated key.", 0, 1)
message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
+102 -36
View File
@@ -55,12 +55,13 @@
duration = 5
randomdir = FALSE
layer = BELOW_MOB_LAYER
var/splatter_type = "splatter"
/obj/effect/overlay/temp/dir_setting/bloodsplatter/New(loc, set_dir)
if(set_dir in diagonals)
icon_state = "splatter[pick(1, 2, 6)]"
icon_state = "[splatter_type][pick(1, 2, 6)]"
else
icon_state = "splatter[pick(3, 4, 5)]"
icon_state = "[splatter_type][pick(3, 4, 5)]"
..()
var/target_pixel_x = 0
var/target_pixel_y = 0
@@ -90,44 +91,35 @@
layer = ABOVE_MOB_LAYER
animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration)
/obj/effect/overlay/temp/dir_setting/bloodsplatter/xenosplatter
splatter_type = "xsplatter"
/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed
name = "healing glow"
icon_state = "heal"
duration = 15
/obj/effect/overlay/temp/dir_setting/firing_effect
icon = 'icons/effects/effects.dmi'
icon_state = "firing_effect"
duration = 2
/obj/effect/overlay/temp/heal/New(loc, colour)
/obj/effect/overlay/temp/dir_setting/firing_effect/setDir(newdir)
switch(newdir)
if(NORTH)
layer = BELOW_MOB_LAYER
pixel_x = rand(-3,3)
pixel_y = rand(4,6)
if(SOUTH)
pixel_x = rand(-3,3)
pixel_y = rand(-1,1)
else
pixel_x = rand(-1,1)
pixel_y = rand(-1,1)
..()
pixel_x = rand(-12, 12)
pixel_y = rand(-9, 0)
if(colour)
color = colour
/obj/effect/overlay/temp/kinetic_blast
name = "kinetic explosion"
icon = 'icons/obj/projectiles.dmi'
icon_state = "kinetic_blast"
layer = ABOVE_ALL_MOB_LAYER
duration = 4
/obj/effect/overlay/temp/dir_setting/firing_effect/energy
icon_state = "firing_effect_energy"
duration = 3
/obj/effect/overlay/temp/explosion
name = "explosion"
icon = 'icons/effects/96x96.dmi'
icon_state = "explosion"
pixel_x = -32
pixel_y = -32
duration = 8
/obj/effect/overlay/temp/explosion/fast
icon_state = "explosionfast"
duration = 4
/obj/effect/overlay/temp/blob
name = "blob"
icon_state = "blob_attack"
alpha = 140
randomdir = 0
duration = 6
/obj/effect/overlay/temp/dir_setting/firing_effect/magic
icon_state = "shieldsparkles"
duration = 3
/obj/effect/overlay/temp/dir_setting/ninja
name = "ninja shadow"
@@ -344,7 +336,7 @@
/obj/effect/overlay/temp/emp/pulse
name = "emp pulse"
icon_state = "emp pulse"
icon_state = "emppulse"
duration = 8
randomdir = 0
@@ -393,6 +385,80 @@
/obj/effect/overlay/temp/sparkle/tailsweep
icon_state = "tailsweep"
/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed
name = "healing glow"
icon_state = "heal"
duration = 15
/obj/effect/overlay/temp/heal/New(loc, colour)
..()
pixel_x = rand(-12, 12)
pixel_y = rand(-9, 0)
if(colour)
color = colour
/obj/effect/overlay/temp/kinetic_blast
name = "kinetic explosion"
icon = 'icons/obj/projectiles.dmi'
icon_state = "kinetic_blast"
layer = ABOVE_ALL_MOB_LAYER
duration = 4
/obj/effect/overlay/temp/explosion
name = "explosion"
icon = 'icons/effects/96x96.dmi'
icon_state = "explosion"
pixel_x = -32
pixel_y = -32
duration = 8
/obj/effect/overlay/temp/explosion/fast
icon_state = "explosionfast"
duration = 4
/obj/effect/overlay/temp/blob
name = "blob"
icon_state = "blob_attack"
alpha = 140
randomdir = 0
duration = 6
/obj/effect/overlay/temp/impact_effect
icon = 'icons/effects/effects.dmi'
icon_state = "impact_bullet"
duration = 5
/obj/effect/overlay/temp/impact_effect/New(loc, atom/target, obj/item/projectile/P)
if(target == P.original) //the projectile hit the target originally clicked
pixel_x = P.p_x + target.pixel_x - 16 + rand(-4,4)
pixel_y = P.p_y + target.pixel_y - 16 + rand(-4,4)
else
pixel_x = target.pixel_x + rand(-4,4)
pixel_y = target.pixel_y + rand(-4,4)
..()
/obj/effect/overlay/temp/impact_effect/red_laser
icon_state = "impact_laser"
duration = 4
/obj/effect/overlay/temp/impact_effect/blue_laser
icon_state = "impact_laser_blue"
duration = 4
/obj/effect/overlay/temp/impact_effect/green_laser
icon_state = "impact_laser_green"
duration = 4
/obj/effect/overlay/temp/impact_effect/purple_laser
icon_state = "impact_laser_purple"
duration = 4
/obj/effect/overlay/temp/impact_effect/ion
icon_state = "shieldsparkles"
duration = 6
/obj/effect/overlay/palmtree_r
name = "Palm tree"
icon = 'icons/misc/beach2.dmi'
+2 -1
View File
@@ -3,7 +3,7 @@
/obj/effect/step_trigger
var/affect_ghosts = 0
var/stopper = 1 // stops throwers
var/mobs_only = 0
var/mobs_only = FALSE
invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit
anchored = 1
@@ -25,6 +25,7 @@
/obj/effect/step_trigger/message
var/message //the message to give to the mob
var/once = 1
mobs_only = TRUE
/obj/effect/step_trigger/message/Trigger(mob/M)
if(M.client)
+7
View File
@@ -344,6 +344,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
var/datum/action/A = X
A.Remove(user)
if(DROPDEL & flags)
//Prevents infinite loops where Destroy() calls an objects dropped() function
flags &= ~DROPDEL
qdel(src)
// called just as an item is picked up (loc is not yet changed)
@@ -585,3 +587,8 @@ obj/item/proc/item_action_slot_check(slot, mob/user)
. = "<span class='notice'>[user] lights [A] with [src].</span>"
else
. = ""
//when an item modify our speech spans when in our active hand. Override this to modify speech spans.
/obj/item/proc/get_held_item_speechspans(mob/living/carbon/user)
return
+46 -8
View File
@@ -54,6 +54,7 @@
fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage."
var/list/image/showing = list()
var/client/viewing
var/legend = FALSE //Viewing the wire legend
/obj/item/areaeditor/blueprints/Destroy()
@@ -63,15 +64,25 @@
/obj/item/areaeditor/blueprints/attack_self(mob/user)
. = ..()
var/area/A = get_area()
if(get_area_type() == AREA_STATION)
. += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>"
. += "<p>You may <a href='?src=\ref[src];edit_area=1'>make an amendment</a> to the drawing.</p>"
if(!viewing)
. += "<p><a href='?src=\ref[src];view_blueprints=1'>View structural data</a></p>"
if(!legend)
var/area/A = get_area()
if(get_area_type() == AREA_STATION)
. += "<p>According to \the [src], you are now in <b>\"[html_encode(A.name)]\"</b>.</p>"
. += "<p>You may <a href='?src=\ref[src];edit_area=1'>make an amendment</a> to the drawing.</p>"
. += "<p><a href='?src=\ref[src];view_legend=1'>View wire colour legend</a></p>"
if(!viewing)
. += "<p><a href='?src=\ref[src];view_blueprints=1'>View structural data</a></p>"
else
. += "<p><a href='?src=\ref[src];refresh=1'>Refresh structural data</a></p>"
. += "<p><a href='?src=\ref[src];hide_blueprints=1'>Hide structural data</a></p>"
else
. += "<p><a href='?src=\ref[src];refresh=1'>Refresh structural data</a></p>"
. += "<p><a href='?src=\ref[src];hide_blueprints=1'>Hide structural data</a></p>"
if(legend == TRUE)
. += "<a href='?src=\ref[src];exit_legend=1'><< Back</a>"
. += view_wire_devices(user);
else
//legend is a wireset
. += "<a href='?src=\ref[src];view_legend=1'><< Back</a>"
. += view_wire_set(user, legend)
var/datum/browser/popup = new(user, "blueprints", "[src]", 700, 500)
popup.set_content(.)
popup.open()
@@ -84,6 +95,12 @@
if(get_area_type()!=AREA_STATION)
return
edit_area()
if(href_list["exit_legend"])
legend = FALSE;
if(href_list["view_legend"])
legend = TRUE;
if(href_list["view_wireset"])
legend = href_list["view_wireset"];
if(href_list["view_blueprints"])
set_viewer(usr, "<span class='notice'>You flip the blueprints over to view the complex information diagram.</span>")
if(href_list["hide_blueprints"])
@@ -122,6 +139,7 @@
/obj/item/areaeditor/blueprints/dropped(mob/user)
..()
clear_viewer()
legend = FALSE
/obj/item/areaeditor/proc/get_area()
@@ -149,6 +167,26 @@
return AREA_SPECIAL
return AREA_STATION
/obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user)
var/message = "<br>You examine the wire legend.<br>"
for(var/wireset in wire_color_directory)
message += "<br><a href='?src=\ref[src];view_wireset=[wireset]'>[wire_name_directory[wireset]]</a>"
message += "</p>"
return message
/obj/item/areaeditor/blueprints/proc/view_wire_set(mob/user, wireset)
//for some reason you can't use wireset directly as a derefencer so this is the next best :/
for(var/device in wire_color_directory)
if("[device]" == wireset) //I know... don't change it...
var/message = "<p><b>[wire_name_directory[device]]:</b>"
for(var/Col in wire_color_directory[device])
var/wire_name = wire_color_directory[device][Col]
if(!findtext(wire_name, WIRE_DUD_PREFIX)) //don't show duds
message += "<p><span style='color: [Col]'>[Col]</span>: [wire_name]</p>"
message += "</p>"
return message
return ""
/proc/create_area(mob/living/creator)
var/res = detect_room(get_turf(creator))
if(!istype(res,/list))
+17 -19
View File
@@ -50,6 +50,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/image/photo = null //Scanned photo
var/list/contained_item = list(/obj/item/weapon/pen, /obj/item/toy/crayon, /obj/item/weapon/lipstick, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/cigarette)
var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above.
/obj/item/device/pda/pickup(mob/user)
..()
@@ -74,7 +76,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
PDAs += src
if(default_cartridge)
cartridge = new default_cartridge(src)
new /obj/item/weapon/pen(src)
inserted_item = new /obj/item/weapon/pen(src)
/obj/item/device/pda/proc/update_label()
name = "PDA-[owner] ([ownjob])" //Name generalisation
@@ -314,10 +316,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
update_label()
if("Eject")//Ejects the cart, only done from hub.
if (!isnull(cartridge))
var/turf/T = loc
if(ismob(T))
T = T.loc
cartridge.loc = T
U.put_in_hands(cartridge)
U << "<span class='notice'>You remove [cartridge] from [src].</span>"
scanmode = 0
if (cartridge.radio)
cartridge.radio.hostpda = null
@@ -704,18 +704,16 @@ var/global/list/obj/item/device/pda/PDAs = list()
return
if (usr.canUseTopic(src))
var/obj/item/weapon/pen/O = locate() in src
if(O)
if (istype(loc, /mob))
if(inserted_item)
if(ismob(loc))
var/mob/M = loc
if(M.get_active_held_item() == null)
M.put_in_hands(O)
usr << "<span class='notice'>You remove \the [O] from \the [src].</span>"
return
O.loc = get_turf(src)
M.put_in_hands(inserted_item)
else
inserted_item.forceMove(loc)
usr << "<span class='notice'>You remove \the [inserted_item] from \the [src].</span>"
inserted_item = null
else
usr << "<span class='warning'>This PDA does not have a pen in it!</span>"
/obj/item/device/pda/proc/id_check(mob/user, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
if(choice == 1)
if (id)
@@ -775,15 +773,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
pai = C
user << "<span class='notice'>You slot \the [C] into [src].</span>"
updateUsrDialog()
else if(istype(C, /obj/item/weapon/pen))
var/obj/item/weapon/pen/O = locate() in src
if(O)
user << "<span class='warning'>There is already a pen in \the [src]!</span>"
else if(is_type_in_list(C, contained_item)) //Checks if there is a pen
if(inserted_item)
user << "<span class='warning'>There is already \a [inserted_item] in \the [src]!</span>"
else
if(!user.unEquip(C))
return
C.loc = src
C.forceMove(src)
user << "<span class='notice'>You slide \the [C] into \the [src].</span>"
inserted_item = C
else if(istype(C, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = C
photo = P.img
@@ -23,6 +23,7 @@
disrupt()
/obj/item/device/chameleon/equipped()
..()
disrupt()
/obj/item/device/chameleon/attack_self()
+6 -38
View File
@@ -6,54 +6,22 @@
w_class = 2
flags = FPRINT
siemens_coefficient = 1
var/spamcheck = 0
var/emagged = 0
var/insults = 0
var/voicespan = "command_headset" // sic
var/list/insultmsg = list("FUCK EVERYONE!", "DEATH TO LIZARDS!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!", "VIVA!", "HONK!")
/obj/item/device/megaphone/attack_self(mob/living/carbon/human/user)
if(user.client)
if(user.client.prefs.muted & MUTE_IC)
src << "<span class='warning'>You cannot speak in IC (muted).</span>"
return
if(!ishuman(user))
user << "<span class='warning'>You don't know how to use this!</span>"
return
var/list/voicespan = list(SPAN_COMMAND)
/obj/item/device/megaphone/get_held_item_speechspans(mob/living/carbon/user)
if(spamcheck > world.time)
user << "<span class='warning'>\The [src] needs to recharge!</span>"
return
var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN)
if(!message)
return
message = capitalize(message)
if(!user.can_speak(message))
user << "<span class='warning'>You find yourself unable to speak at all!</span>"
return
if ((src.loc == user && user.stat == 0))
if(emagged)
if(insults)
user.say(pick(insultmsg),"machine", list(voicespan))
insults--
else
user << "<span class='warning'>*BZZZZzzzzzt*</span>"
else
user.say(message,"machine", list(voicespan))
else
playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1)
spamcheck = world.time + 50
return
return voicespan
/obj/item/device/megaphone/emag_act(mob/user)
user << "<span class='warning'>You overload \the [src]'s voice synthesizer.</span>"
emagged = 1
insults = rand(1, 3) //to prevent dickflooding
voicespan = list(SPAN_REALLYBIG, "userdanger")
/obj/item/device/megaphone/sec
name = "security megaphone"
@@ -71,4 +39,4 @@
name = "clown's megaphone"
desc = "Something that should not exist."
icon_state = "megaphone-clown"
voicespan = "clown"
voicespan = list(SPAN_CLOWN)
+189
View File
@@ -0,0 +1,189 @@
/obj/item/weapon/banner
name = "banner"
icon = 'icons/obj/items.dmi'
icon_state = "banner"
item_state = "banner"
desc = "A banner with Nanotrasen's logo on it."
var/moralecooldown = 0
var/moralewait = 600
/obj/item/weapon/banner/attack_self(mob/living/carbon/human/user)
if(moralecooldown + moralewait > world.time)
return
user << "<span class='notice'>You increase the morale of your fellows!</span>"
moralecooldown = world.time
for(var/mob/living/carbon/human/H in range(4,get_turf(src)))
H << "<span class='notice'>Your morale is increased by [user]'s banner!</span>"
H.adjustBruteLoss(-15)
H.adjustFireLoss(-15)
H.AdjustStunned(-2)
H.AdjustWeakened(-2)
H.AdjustParalysis(-2)
/obj/item/weapon/banner/red
name = "red banner"
icon_state = "banner-red"
item_state = "banner-red"
desc = "A banner with the logo of the red deity."
/obj/item/weapon/banner/blue
name = "blue banner"
icon_state = "banner-blue"
item_state = "banner-blue"
desc = "A banner with the logo of the blue deity"
/obj/item/weapon/storage/backpack/bannerpack
name = "nanotrasen banner backpack"
desc = "It's a backpack with lots of extra room. A banner with Nanotrasen's logo is attached, that can't be removed."
max_combined_w_class = 27 //6 more then normal, for the tradeoff of declaring yourself an antag at all times.
icon_state = "bannerpack"
/obj/item/weapon/storage/backpack/bannerpack/red
name = "red banner backpack"
desc = "It's a backpack with lots of extra room. A red banner is attached, that can't be removed."
icon_state = "bannerpack-red"
/obj/item/weapon/storage/backpack/bannerpack/blue
name = "blue banner backpack"
desc = "It's a backpack with lots of extra room. A blue banner is attached, that can't be removed."
icon_state = "bannerpack-blue"
//this is all part of one item set
/obj/item/clothing/suit/armor/plate/crusader
name = "Crusader's Armour"
desc = "Armour that's comprised of metal and cloth."
icon_state = "crusader"
w_class = 4 //bulky
slowdown = 2.0 //gotta pretend we're balanced.
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0)
/obj/item/clothing/suit/armor/plate/crusader/red
icon_state = "crusader-red"
/obj/item/clothing/suit/armor/plate/crusader/blue
icon_state = "crusader-blue"
/obj/item/clothing/head/helmet/plate/crusader
name = "Crusader's Hood"
desc = "A brownish hood."
icon_state = "crusader"
w_class = 3 //normal
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0)
/obj/item/clothing/head/helmet/plate/crusader/blue
icon_state = "crusader-blue"
/obj/item/clothing/head/helmet/plate/crusader/red
icon_state = "crusader-red"
//Prophet helmet
/obj/item/clothing/head/helmet/plate/crusader/prophet
name = "Prophet's Hat"
desc = "A religious-looking hat."
alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
flags = 0
armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 70, bio = 50, rad = 50) //religion protects you from disease and radiation, honk.
worn_x_dimension = 64
worn_y_dimension = 64
/obj/item/clothing/head/helmet/plate/crusader/prophet/red
icon_state = "prophet-red"
/obj/item/clothing/head/helmet/plate/crusader/prophet/blue
icon_state = "prophet-blue"
//Structure conversion staff
/obj/item/weapon/godstaff
name = "godstaff"
desc = "It's a stick..?"
icon_state = "godstaff-red"
var/conversion_color = "#ffffff"
var/staffcooldown = 0
var/staffwait = 30
/obj/item/weapon/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(staffcooldown + staffwait > world.time)
return
user.visible_message("[user] chants deeply and waves their staff!")
if(do_after(user, 20,1,src))
target.color = conversion_color //wololo
staffcooldown = world.time
/obj/item/weapon/godstaff/red
icon_state = "godstaff-red"
conversion_color = "#ff0000"
/obj/item/weapon/godstaff/blue
icon_state = "godstaff-blue"
conversion_color = "#0000ff"
/obj/item/clothing/gloves/plate
name = "Plate Gauntlets"
icon_state = "crusader"
desc = "They're like gloves, but made of metal."
siemens_coefficient = 0
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
/obj/item/clothing/gloves/plate/red
icon_state = "crusader-red"
/obj/item/clothing/gloves/plate/blue
icon_state = "crusader-blue"
/obj/item/clothing/shoes/plate
name = "Plate Boots"
desc = "Metal boots, they look heavy."
icon_state = "crusader"
w_class = 3 //normal
armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0) //does this even do anything on boots?
flags = NOSLIP
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
/obj/item/clothing/shoes/plate/red
icon_state = "crusader-red"
/obj/item/clothing/shoes/plate/blue
icon_state = "crusader-blue"
/obj/item/weapon/storage/box/itemset/crusader
name = "Crusader's Armour Set" //i can't into ck2 references
desc = "This armour is said to be based on the armor of kings on another world thousands of years ago, who tended to assassinate, conspire, and plot against everyone who tried to do the same to them. Some things never change."
/obj/item/weapon/storage/box/itemset/crusader/blue/New()
..()
contents = list()
sleep(1)
new /obj/item/clothing/suit/armor/plate/crusader/blue(src)
new /obj/item/clothing/head/helmet/plate/crusader/blue(src)
new /obj/item/clothing/gloves/plate/blue(src)
new /obj/item/clothing/shoes/plate/blue(src)
/obj/item/weapon/storage/box/itemset/crusader/red/New()
..()
contents = list()
sleep(1)
new /obj/item/clothing/suit/armor/plate/crusader/red(src)
new /obj/item/clothing/head/helmet/plate/crusader/red(src)
new /obj/item/clothing/gloves/plate/red(src)
new /obj/item/clothing/shoes/plate/red(src)
/obj/item/weapon/claymore/weak
desc = "This one is rusted."
force = 30
armour_penetration = 15
+5 -4
View File
@@ -10,15 +10,16 @@
icon_state = "elecarm"
var/charge_cost = 30
/obj/item/borg/stun/attack(mob/living/M, mob/living/silicon/robot/user)
/obj/item/borg/stun/attack(mob/living/M, mob/living/user)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.check_shields(0, "[M]'s [name]", src, MELEE_ATTACK))
playsound(M, 'sound/weapons/Genhit.ogg', 50, 1)
return 0
if(!user.cell.use(charge_cost))
return
if(isrobot(user))
var/mob/living/silicon/robot/R = user
if(!R.cell.use(charge_cost))
return
user.do_attack_animation(M)
M.Weaken(5)
+2 -1
View File
@@ -137,6 +137,7 @@
if (R.max_res_amount > 1)
var/obj/item/stack/new_item = O
new_item.amount = R.res_amount*multiplier
new_item.update_icon()
if(new_item.amount <= 0)//if the stack is empty, i.e it has been merged with an existing stack and has been garbage collected
return
@@ -232,7 +233,7 @@
..()
return
/obj/item/stack/AltClick(mob/user)
/obj/item/stack/AltClick(mob/living/user)
if(user.incapacitated())
user << "<span class='warning'>You can't do that right now!</span>"
return
@@ -573,3 +573,177 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user << "<span class='warning'>You need to dry this first!</span>"
else
..()
///////////////
//VAPE NATION//
///////////////
/obj/item/clothing/mask/vape
name = "E-Cigarette"
desc = "A classy and highly sophisticated electronic cigarette, for classy and dignified gentlemen. A warning label reads \"Warning: do not fill with flamable materials\""//<<< i'd vape to that.
icon = 'icons/obj/clothing/masks.dmi'
icon_state = null
item_state = null
var/chem_volume = 100
var/vapetime = 0 //this so it won't puff out clouds every tick
var/screw = 0 // kinky
var/super = 0 //for the fattest vapes dude.
var/emagged = 0 //LET THE GRIEF BEGIN
/obj/item/clothing/mask/vape/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is puffin hard on dat vape, they trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer
return (TOXLOSS|OXYLOSS)
/obj/item/clothing/mask/vape/New(loc, var/param_color = null)
..()
create_reagents(chem_volume)
reagents.set_reacting(FALSE) // so it doesn't react until you light it
reagents.add_reagent("nicotine", 50)
if(!icon_state)
if(!param_color)
param_color = pick("red","blue","black","white","green","purple","yellow","orange")
icon_state = "[param_color]_vape"
item_state = "[param_color]_vape"
/obj/item/clothing/mask/vape/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
if(reagents.total_volume < chem_volume)
if(O.reagents.total_volume > 0)
O.reagents.trans_to(src,25)
user << "<span class='notice'>You add the contents of [O] to the [src]</span>"
else
user << "<span class='warning'>The [O] is empty!</span>"
else
user << "<span class='warning'>[src] can't hold anymore reagents!</span>"
if(istype(O, /obj/item/weapon/screwdriver))
if(!screw)
screw = 1
user << "<span class='notice'>You open the cap on the [src]</span>"
if(super)
add_overlay(image(icon, "vapeopen_med"))
else
add_overlay(image(icon, "vapeopen_low"))
else
screw = 0
user << "<span class='notice'>You close the cap on the [src]</span>"
cut_overlays()
if(istype(O, /obj/item/device/multitool))
if(screw && !emagged)//also kinky
if(!super)
cut_overlays()
super = 1
user << "<span class='notice'>You increase the voltage in the [src]</span>"
add_overlay(image(icon, "vapeopen_med"))
else
cut_overlays()
super = 0
user << "<span class='notice'>You decrease the voltage in the [src]</span>"
add_overlay(image(icon, "vapeopen_low"))
if(screw && emagged)
user << "<span class='notice'>The [name] can't be modified!</span>"
/obj/item/clothing/mask/vape/emag_act(mob/user)// I WON'T REGRET WRITTING THIS, SURLY.
if(screw)
if(!emagged)
cut_overlays()
emagged = 1
super = 0
user << "<span class='warning'>You maximize the voltage in the [src]</span>"
add_overlay(image(icon, "vapeopen_high"))
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread //for effect
sp.set_up(5, 1, src)
sp.start()
else
user << "<span class='warning'>The [name] is already emagged!</span>"
else
user << "<span class='notice'>You need to open the cap to do that</span>"
/obj/item/clothing/mask/vape/attack_self(mob/user)
if(reagents.total_volume > 0)
user << "<span class='notice'>you empty [src] of all reagents.</span>"
reagents.clear_reagents()
return
/obj/item/clothing/mask/vape/equipped(mob/user, slot)
if(slot == slot_wear_mask)
if(!screw)
user << "<span class='notice'>You start puffing on that dank vape</span>"
reagents.set_reacting(TRUE)
START_PROCESSING(SSobj, src)
else //it will not start if the vape is opened.
user << "<span class='warning'>You need to close the cap first!</span>"
/obj/item/clothing/mask/vape/dropped(mob/user)
var/mob/living/carbon/C = user
if(C.get_item_by_slot(slot_wear_mask) == src)
reagents.set_reacting(FALSE)
STOP_PROCESSING(SSobj, src)
/obj/item/clothing/mask/vape/proc/hand_reagents()//had to rename to avoid duplicate error
if(reagents.total_volume)
if(iscarbon(loc))
var/mob/living/carbon/C = loc
if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob
var/fraction = min(REAGENTS_METABOLISM/reagents.total_volume, 1) //this will react instantly, making them a little more dangerous than cigarettes
reagents.reaction(C, INGEST, fraction)
reagents.trans_to(C, REAGENTS_METABOLISM)
if(reagents.get_reagent_amount("welding_fuel"))
//HOT STUFF
C.fire_stacks = 2
C.IgniteMob()
if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
e.start()
if(ismob(loc))
var/mob/M = loc
M.unEquip(src, 1)
qdel(src)
return
reagents.remove_any(REAGENTS_METABOLISM)
/obj/item/clothing/mask/vape/process()
var/mob/living/M = loc
if(isliving(loc))
M.IgniteMob()
vapetime++
if(!reagents.total_volume)
if(ismob(loc))
M << "<span class='notice'>The [name] is empty!</span>"
STOP_PROCESSING(SSobj, src)
//it's reusable so it won't unequip when empty
return
//open flame removed because vapes are a closed system, they wont light anything on fire
if(super && vapetime > 3)//Time to start puffing those fat vapes, yo.
var/datum/effect_system/smoke_spread/chem/s = new
s.set_up(reagents, 1, loc)
s.start()
vapetime = 0
if(emagged && vapetime > 3)
var/datum/effect_system/smoke_spread/chem/s = new
s.set_up(reagents, 4, loc)
s.start()
vapetime = 0
if(prob(5))//small chance for the vape to break and deal damage if it's emagged
playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0)
M.apply_damage(20, BURN, "head")
M.unEquip(src, 1)
M.Weaken(15, 1, 0)
qdel(src)
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread
sp.set_up(5, 1, src)
sp.start()
M << "<span class='userdanger'>The [name] suddenly explodes in your mouth!</span>"
if(reagents && reagents.total_volume)
hand_reagents()
@@ -52,10 +52,10 @@
add_fingerprint(user)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
var/message = "[ADMIN_LOOKUPFLW(user)]) has primed a [name] for detonation at [ADMIN_COORDJMP(src)]"
var/message = "[ADMIN_LOOKUPFLW(user)]) has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]"
bombers += message
message_admins(message)
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(src)].")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_on()
@@ -17,15 +17,8 @@
for(var/mob/living/carbon/C in viewers(T, null))
C.flash_act()
for(var/i=1, i<=deliveryamt, i++)
var/atom/movable/x = new spawner_type
x.admin_spawned = admin_spawned
x.loc = T
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(x, pick(NORTH,SOUTH,EAST,WEST))
// Spawn some hostile syndicate critters
// Spawn some hostile syndicate critters and spread them out
spawn_and_random_walk(spawner_type, T, deliveryamt, walk_chance=50, admin_spawn=admin_spawned)
qdel(src)
@@ -32,7 +32,7 @@
return -1
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
if((target.mind in ticker.mode.cult) || (target.mind in ticker.mode.blue_deity_prophets|ticker.mode.red_deity_prophets|ticker.mode.red_deity_followers|ticker.mode.blue_deity_followers))
if(target.mind in ticker.mode.cult)
target << "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>"
else
target << "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>"
@@ -46,7 +46,6 @@
return 1
return 0
/obj/item/weapon/implanter/mindshield
name = "implanter (mindshield)"
@@ -121,6 +121,7 @@
desc = "A sharpened bone. The bare mimimum in survival."
force = 15
throwforce = 15
materials = list()
/obj/item/weapon/kitchen/knife/combat/cyborg
name = "cyborg knife"
@@ -238,7 +238,6 @@
/obj/item/weapon/melee/energy/blade/dropped()
..()
qdel(src)
/obj/item/weapon/melee/energy/blade/attack_self(mob/user)
return
+12 -1
View File
@@ -21,6 +21,17 @@
user.visible_message("<span class='suicide'>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>")
return (OXYLOSS)
/obj/item/weapon/melee/synthetic_arm_blade
name = "synthetic arm blade"
desc = "A grotesque blade that on closer inspection seems made of synthentic flesh, it still feels like it would hurt very badly as a weapon."
icon = 'icons/obj/weapons.dmi'
icon_state = "arm_blade"
item_state = "arm_blade"
origin_tech = "combat=5,biotech=5"
w_class = 5.0
force = 15
throwforce = 10
sharpness = IS_SHARP
/obj/item/weapon/melee/sabre
name = "officer's sabre"
@@ -36,7 +47,7 @@
armour_penetration = 75
sharpness = IS_SHARP
origin_tech = "combat=5"
attack_verb = list("lunged at", "stabbed")
attack_verb = list("slashed", "cut")
hitsound = 'sound/weapons/rapierhit.ogg'
materials = list(MAT_METAL = 1000)
+5 -9
View File
@@ -1,5 +1,3 @@
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune))
/obj/item/weapon/mop
desc = "The world of janitalia wouldn't be complete without a mop."
name = "mop"
@@ -42,16 +40,14 @@ obj/item/weapon/mop/proc/clean(turf/A)
user << "<span class='warning'>Your mop is dry!</span>"
return
var/turf/turf = A
if(is_cleanable(A))
turf = A.loc
var/turf/T = get_turf(A)
if(istype(turf))
user.visible_message("[user] begins to clean \the [turf] with [src].", "<span class='notice'>You begin to clean \the [turf] with [src]...</span>")
if(T)
user.visible_message("[user] begins to clean \the [T] with [src].", "<span class='notice'>You begin to clean \the [T] with [src]...</span>")
if(do_after(user, src.mopspeed, target = turf))
if(do_after(user, src.mopspeed, target = T))
user << "<span class='notice'>You finish mopping.</span>"
clean(turf)
clean(T)
/obj/effect/attackby(obj/item/I, mob/user, params)
@@ -431,6 +431,23 @@
/obj/item/weapon/melee/sabre
)
/obj/item/weapon/storage/belt/sabre/examine(mob/user)
..()
if(contents.len)
user << "<span class='notice'>Alt-click it to quickly draw the blade.</span>"
/obj/item/weapon/storage/belt/sabre/AltClick(mob/user)
if(!ishuman(user) || !user.canUseTopic(src))
return
if(contents.len)
var/obj/item/I = contents[1]
user.visible_message("[user] takes [I] out of [src].", "<span class='notice'>You take [I] out of [src].</span>",\
)
user.put_in_hands(I)
update_icon()
else
user << "[src] is empty."
/obj/item/weapon/storage/belt/sabre/update_icon()
icon_state = "sheath"
item_state = "sheath"
@@ -442,6 +459,7 @@
L.regenerate_icons()
..()
/obj/item/weapon/storage/belt/sabre/New()
..()
new /obj/item/weapon/melee/sabre(src)
@@ -2,7 +2,7 @@
/obj/item/weapon/storage/box/syndicate/New()
..()
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "lordsingulo" = 1, "darklord" = 1, "sniper" = 1, "metaops" = 1)))
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "lordsingulo" = 1, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
if("bloodyspai") // 27 tc now this is more right
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
new /obj/item/clothing/mask/chameleon(src) // Goes with above
@@ -131,6 +131,19 @@
new /obj/item/weapon/grenade/plastic/c4 (src) // 1 tc
new /obj/item/weapon/card/emag(src) // 6 tc
return
if("ninja") // 33 tc worth
new /obj/item/weapon/katana(src) // Unique , hard to tell how much tc this is worth. 8 tc?
new /obj/item/weapon/implanter/adrenalin(src) // 8 tc
new /obj/item/weapon/throwing_star(src) // ~5 tc for all 6
new /obj/item/weapon/throwing_star(src)
new /obj/item/weapon/throwing_star(src)
new /obj/item/weapon/throwing_star(src)
new /obj/item/weapon/throwing_star(src)
new /obj/item/weapon/throwing_star(src)
new /obj/item/weapon/storage/belt/military/assault(src) // 3 tc
new /obj/item/weapon/card/id/syndicate(src) // 2 tc
new /obj/item/device/chameleon(src) // 7 tc
/obj/item/weapon/storage/box/syndie_kit
name = "box"
+4 -12
View File
@@ -518,6 +518,7 @@ obj/item/weapon/weldingtool/proc/switched_off(mob/user)
can_off_process = 1
light_intensity = 1
toolspeed = 2
var/nextrefueltick = 0
/obj/item/weapon/weldingtool/experimental/brass
name = "brass welding tool"
@@ -526,20 +527,11 @@ obj/item/weapon/weldingtool/proc/switched_off(mob/user)
item_state = "brasswelder"
//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
//i don't think this is actually used, yaaaaay -Pete
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()
if(!welding && !last_gen)
last_gen = 1
reagents.add_reagent("welding_fuel",1)
spawn(10)
last_gen = 0
/obj/item/weapon/weldingtool/experimental/process()
..()
if(reagents.total_volume < max_fuel)
fuel_gen()
if(get_fuel() < max_fuel && nextrefueltick < world.time)
nextrefueltick = world.time + 10
reagents.add_reagent("welding_fuel", 1)
/*
@@ -57,8 +57,8 @@
/obj/item/weapon/vending_refill/cigarette
machine_name = "ShadyCigs Deluxe"
icon_state = "refill_smoke"
charges = list(12, 1, 2)// of 36 standard, 3 contraband, 6 premium
init_charges = list(12, 1, 2)
charges = list(12, 3, 2)// of 36 standard, 9 contraband, 6 premium
init_charges = list(12, 3, 2)
/obj/item/weapon/vending_refill/autodrobe
machine_name = "AutoDrobe"
@@ -69,5 +69,5 @@
/obj/item/weapon/vending_refill/clothing
machine_name = "ClothesMate"
icon_state = "refill_clothes"
charges = list(31, 3, 4)// of 101 standard, 7 contraband, 10 premium(?)
init_charges = list(31, 2, 4)
charges = list(31, 4, 4)// of 101 standard, 12 contraband, 10 premium(?)
init_charges = list(31, 4, 4)
+37 -2
View File
@@ -82,10 +82,14 @@
var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
flags = CONDUCT | NODROP
slot_flags = null
block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY
attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved", "gored") //ONLY THE MOST VISCERAL ATTACK VERBS
attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS
var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
var/announced = FALSE //IF WE ARE THE ONLY ONE LEFT STANDING
var/bloodthirst_level = 0 //HOW THIRSTY WE ARE FOR BLOOD
var/obj/item/weapon/disk/nuclear/nuke_disk //OUR STORED NUKE DISK
/obj/item/weapon/claymore/highlander/New()
..()
@@ -95,19 +99,27 @@ var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander/Destroy()
STOP_PROCESSING(SSobj, src)
highlander_claymores--
if(nuke_disk)
nuke_disk.forceMove(get_turf(src))
nuke_disk.visible_message("<span class='warning'>The nuke disk is vulnerable!</span>")
nuke_disk = null
return ..()
/obj/item/weapon/claymore/highlander/process()
if(isliving(loc))
var/mob/living/L = loc
if(L.stat != DEAD)
if(!announced)
handle_bloodthirst(L)
if(announced || admin_spawned || highlander_claymores > 1)
return
announced = TRUE
L.fully_heal()
world << "<span class='userdanger'>[L.real_name] IS THE ONLY ONE LEFT STANDING!</span>"
world << "<span class='userdanger'>[uppertext(L.real_name)] IS THE ONLY ONE LEFT STANDING!</span>"
world << sound('sound/misc/highlander_only_one.ogg')
L << "<span class='notice'>YOU ARE THE ONLY ONE LEFT STANDING!</span>"
for(var/obj/item/weapon/bloodcrawl/B in L)
qdel(B)
/obj/item/weapon/claymore/highlander/pickup(mob/living/user)
user << "<span class='notice'>The power of Scotland protects you! You are shielded from all stuns and knockdowns.</span>"
@@ -120,12 +132,18 @@ var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander/examine(mob/user)
..()
user << "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade."
if(nuke_disk)
user << "<span class='boldwarning'>It's holding the nuke disk!</span>"
/obj/item/weapon/claymore/highlander/attack(mob/living/target, mob/living/user)
var/old_target_stat = target.stat
. = ..()
bloodthirst_level = max(bloodthirst_level - (target.mind && target.mind.special_role == "highlander" ? 15 : 5), 0)
if(target && target.stat == DEAD && old_target_stat != DEAD && target.mind && target.mind.special_role == "highlander")
user.fully_heal() //STEAL THE LIFE OF OUR FALLEN FOES
if(bloodthirst_level >= 30)
user << "<span class='notice'>[src] shakes greedily as it devours [target]'s soul. Its bloodthirst is quenched for the moment...</span>"
bloodthirst_level = 0
add_notch(user)
target.visible_message("<span class='warning'>[target] crumbles to dust beneath [user]'s blows!</span>", "<span class='userdanger'>As you fall, your body crumbles to dust!</span>")
target.dust()
@@ -138,6 +156,7 @@ var/highlander_claymores = 0
closest_victim = H
if(!closest_victim)
user << "<span class='warning'>[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.</span>"
return
user << "<span class='danger'>[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].</span>"
/obj/item/weapon/claymore/highlander/IsReflect()
@@ -196,6 +215,22 @@ var/highlander_claymores = 0
name = new_name
playsound(user, 'sound/items/Screwdriver2.ogg', 50, 1)
/obj/item/weapon/claymore/highlander/proc/handle_bloodthirst(mob/living/S) //THE BLADE THIRSTS FOR BLOOD AND WILL PUNISH THE WEAK OR PACIFISTIC
bloodthirst_level += (1 + min(notches, 10))
if(bloodthirst_level == 30)
S << "<span class='warning'>[src] shudders in your hand. It hungers for battle...</span>"
if(bloodthirst_level == 60)
S << "<span class='boldwarning'>[src] trembles violently. Kill someone already!</span>"
if(bloodthirst_level == 90)
S << "<span class='userdanger'>[src] starts shaking viciously! Shed blood or it'll give you away!</span>"
if(bloodthirst_level >= 120)
var/turf/T = get_turf(S)
for(var/mob/M in player_list - S)
if(M.z == T.z)
M << "<span class='userdanger'>THERE IS A COWARD WHO DOES NOT FIGHT TO THE [uppertext(dir2text(get_dir(M, T)))]. THEIR NAME IS [uppertext(S.real_name)] - SLAUGHTER THEM.</span>"
S << "<span class='notice'>you fucked up</span>"
bloodthirst_level = 100
/obj/item/weapon/katana
name = "katana"
desc = "Woefully underpowered in D20"
+2 -2
View File
@@ -216,10 +216,10 @@
if(burn)
Item.fire_act() //Set them on fire, too
/obj/proc/tesla_act(var/power)
/obj/proc/tesla_act(power, explosive = FALSE)
being_shocked = 1
var/power_bounced = power / 2
tesla_zap(src, 3, power_bounced)
tesla_zap(src, 3, power_bounced, explosive)
addtimer(src, "reset_shocked", 10)
/obj/proc/reset_shocked()
@@ -11,6 +11,8 @@
new /obj/item/clothing/under/shorts/red(src)
new /obj/item/clothing/under/shorts/blue(src)
new /obj/item/clothing/under/shorts/green(src)
if(prob(3))
new /obj/item/clothing/under/jabroni(src)
/obj/structure/closet/boxinggloves
+46
View File
@@ -0,0 +1,46 @@
/obj/structure/sacrificealtar
name = "sacrificial altar"
desc = "An altar designed to perform blood sacrifice for a deity."
icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "sacrificealtar"
anchored = 1
density = 0
can_buckle = 1
/obj/structure/sacrificealtar/attack_hand(mob/living/user)
..()
if(!has_buckled_mobs())
return
var/mob/living/L = locate() in buckled_mobs
if(!L)
return
user << "<span class='notice'>You attempt to sacrifice [L] by invoking the sacrificial ritual.</span>"
L.gib()
message_admins("[key_name_admin(user)] has sacrificed [key_name_admin(L)] on the sacrifical altar.")
/obj/structure/healingfountain
name = "healing fountain"
desc = "A fountain containing the waters of life."
icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "fountain"
anchored = 1
density = 1
var/time_between_uses = 1800
var/last_process = 0
/obj/structure/healingfountain/attack_hand(mob/living/user)
if(last_process + time_between_uses > world.time)
user << "<span class='notice'>The fountain appears to be empty.</span>"
return
last_process = world.time
user << "<span class='notice'>The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.</span>"
user.reagents.add_reagent("godblood",20)
update_icons()
addtimer(src, "update_icons", time_between_uses)
/obj/structure/healingfountain/proc/update_icons()
if(last_process + time_between_uses > world.time)
icon_state = "fountain"
else
icon_state = "fountain-red"
+1
View File
@@ -25,6 +25,7 @@
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
icon = 'icons/obj/flora/pinetrees.dmi'
icon_state = "tree_stump"
density = 0
pixel_x = -16
name += " stump"
cut = TRUE
+40
View File
@@ -120,3 +120,43 @@
name = "dense stack of papers"
desc = "A stack of various papers, childish scribbles scattered across each page."
icon_state = "paperstack"
/obj/structure/fluff/divine
name = "Miracle"
icon = 'icons/obj/hand_of_god_structures.dmi'
anchored = 1
density = 1
/obj/structure/fluff/divine/nexus
name = "nexus"
desc = "It anchors a deity to this world. It radiates an unusual aura. It looks well protected from explosive shock."
icon_state = "nexus-neutral"
/obj/structure/fluff/divine/conduit
name = "conduit"
desc = "It allows a deity to extend their reach. Their powers are just as potent near a conduit as a nexus."
icon_state = "conduit-neutral"
/obj/structure/fluff/divine/convertaltar
name = "conversion altar"
desc = "An altar dedicated to a deity."
icon_state = "convertaltar-neutral"
density = 0
can_buckle = 1
/obj/structure/fluff/divine/powerpylon
name = "power pylon"
desc = "A pylon which increases the deity's rate it can influence the world."
icon_state = "powerpylon"
can_buckle = 1
/obj/structure/fluff/divine/defensepylon
name = "defense pylon"
desc = "A pylon which is blessed to withstand many blows, and fire strong bolts at nonbelievers. A god can toggle it."
icon_state = "defensepylon"
/obj/structure/fluff/divine/shrine
name = "shrine"
desc = "A shrine dedicated to a deity."
icon_state = "shrine"
+2 -11
View File
@@ -264,17 +264,8 @@
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
if(C)
var/mob/living/closest_mob
for(var/A in oview(src, 3))
if(istype(A, /mob/living))
var/dist = get_dist(src, A)
if(dist <= 3)
closest_mob = A
if(closest_mob)
var/shock_damage = C.powernet.avail * 0.0002//setting shock damage for later. equals 1/5000 the power in the grid
src.Beam(closest_mob, icon_state="lightning[rand(1,12)]", time=5)
closest_mob.electrocute_act(shock_damage, src, 1)//ZAP, damage should be about 40 with 200000W
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 3, C.powernet.avail * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
take_damage(tforce)
/obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
@@ -20,6 +20,22 @@
var/obj/F = new /obj/structure/kitchenspike(src.loc,)
transfer_fingerprints_to(F)
qdel(src)
else if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = I
if(!WT.remove_fuel(0, user))
return
user << "<span class='notice'>You begin cutting \the [src] apart...</span>"
playsound(src.loc, "sound/items/Welder.ogg", 40, 1)
if(do_after(user, 40/WT.toolspeed, 1, target = src))
if(!WT.isOn())
return
playsound(src.loc, "sound/items/Welder.ogg", 50, 1)
visible_message("<span class='notice'>[user] slices apart \the [src].</span>",
"<span class='notice'>You cut \the [src] apart with \the [WT].</span>",
"<span class='italics'>You hear welding.</span>")
new /obj/item/stack/sheet/metal(src.loc, 4)
qdel(src)
return
else
return ..()
@@ -391,6 +391,7 @@
icon = 'icons/obj/smooth_structures/brass_table.dmi'
icon_state = "brass_table"
frame = /obj/structure/table_frame/brass
framestack = /obj/item/stack/sheet/brass
buildstack = /obj/item/stack/sheet/brass
framestackamount = 1
buildstackamount = 1
+99
View File
@@ -0,0 +1,99 @@
/obj/structure/trap
name = "IT'S A TARP"
desc = "stepping on me is a guaranteed bad day"
icon = 'icons/obj/hand_of_god_structures.dmi'
icon_state = "trap"
density = 0
alpha = 30 //initially quite hidden when not "recharging"
var/last_trigger = 0
var/time_between_triggers = 600 //takes a minute to recharge
/obj/structure/trap/Crossed(atom/movable/AM)
if(last_trigger + time_between_triggers > world.time)
return
alpha = initial(alpha)
if(isliving(AM))
var/mob/living/L = AM
last_trigger = world.time
alpha = 200
trap_effect(L)
animate(src, alpha = initial(alpha), time = time_between_triggers)
/obj/structure/trap/examine(mob/user)
..()
if(!isliving(user)) //bad ghosts, stop trying to powergame from beyond the grave
return
user << "You reveal a trap!"
alpha = 200
animate(src, alpha = initial(alpha), time = time_between_triggers)
/obj/structure/trap/proc/trap_effect(mob/living/L)
return
/obj/structure/trap/stun
name = "shock trap"
desc = "A trap that will shock you, it will burn your flesh and render you immobile, You'd better avoid it."
icon_state = "trap-shock"
/obj/structure/trap/stun/trap_effect(mob/living/L)
L << "<span class='danger'><B>You are paralyzed from the intense shock!</B></span>"
L.Weaken(5)
var/turf/Lturf = get_turf(L)
new /obj/effect/particle_effect/sparks/electricity(Lturf)
new /obj/effect/particle_effect/sparks(Lturf)
/obj/structure/trap/fire
name = "flame trap"
desc = "A trap that will set you ablaze. You'd better avoid it."
icon_state = "trap-fire"
/obj/structure/trap/fire/trap_effect(mob/living/L)
L << "<span class='danger'><B>Spontaneous combustion!</B></span>"
L.Weaken(1)
var/turf/Lturf = get_turf(L)
new /obj/effect/hotspot(Lturf)
new /obj/effect/particle_effect/sparks(Lturf)
/obj/structure/trap/chill
name = "frost trap"
desc = "A trap that will chill you to the bone. You'd better avoid it."
icon_state = "trap-frost"
/obj/structure/trap/chill/trap_effect(mob/living/L)
L << "<span class='danger'><B>You're frozen solid!</B></span>"
L.Weaken(1)
L.bodytemperature -= 300
new /obj/effect/particle_effect/sparks(get_turf(L))
/obj/structure/trap/damage
name = "earth trap"
desc = "A trap that will summon a small earthquake, just for you. You'd better avoid it."
icon_state = "trap-earth"
/obj/structure/trap/damage/trap_effect(mob/living/L)
L << "<span class='danger'><B>The ground quakes beneath your feet!</B></span>"
L.Weaken(5)
L.adjustBruteLoss(35)
var/turf/Lturf = get_turf(L)
new /obj/effect/particle_effect/sparks(Lturf)
new /obj/structure/flora/rock(Lturf)
/obj/structure/trap/ward
name = "divine ward"
desc = "A divine barrier, It looks like you could destroy it with enough effort, or wait for it to dissipate..."
icon_state = "ward"
density = 1
time_between_triggers = 1200 //Exists for 2 minutes
/obj/structure/trap/ward/New()
..()
QDEL_IN(src, time_between_triggers)
+5 -4
View File
@@ -516,19 +516,20 @@
/obj/structure/window/reinforced/clockwork/New(loc, direct)
..()
for(var/obj/item/I in debris)
debris -= I
qdel(I)
if(!fulltile)
if(direct)
var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/window/single, get_turf(src))
setDir(direct)
E.setDir(direct)
made_glow = TRUE
debris += new/obj/item/stack/sheet/brass(src, 1)
else
PoolOrNew(/obj/effect/overlay/temp/ratvar/window, get_turf(src))
made_glow = TRUE
for(var/obj/item/I in debris)
debris -= I
qdel(I)
debris += new/obj/item/stack/sheet/brass(src)
debris += new/obj/item/stack/sheet/brass(src, 2)
change_construction_value(fulltile ? 3 : 2)
/obj/structure/window/reinforced/clockwork/setDir(direct)