Merge pull request #2999 from Fox-McCloud/tesla-port-final

Ports TG's Tesla Engine
This commit is contained in:
Mark van Alphen
2015-12-25 16:21:11 +01:00
56 changed files with 542 additions and 250 deletions
-4
View File
@@ -316,7 +316,6 @@ BLIND // can't see anything
desc = "Comfortable-looking shoes."
gender = PLURAL //Carn: for grammarically correct text-parsing
var/chained = 0
siemens_coefficient = 0.9
body_parts_covered = FEET
slot_flags = SLOT_FEET
@@ -343,7 +342,6 @@ BLIND // can't see anything
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
siemens_coefficient = 0.9
//Spacesuit
//Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together.
@@ -361,7 +359,6 @@ BLIND // can't see anything
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
siemens_coefficient = 0.9
species_restricted = list("exclude","Diona","Vox","Wryn")
flash_protect = 2
strip_delay = 50
@@ -387,7 +384,6 @@ BLIND // can't see anything
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
strip_delay = 80
put_on_delay = 80
siemens_coefficient = 0.9
species_restricted = list("exclude","Diona","Vox","Wryn")
//Under clothing
@@ -16,7 +16,6 @@
name = "cyborg gloves"
icon_state = "black"
item_state = "r_hands"
siemens_coefficient = 1.0
/obj/item/clothing/gloves/combat
desc = "These tactical gloves are somewhat fire and impact resistant."
-1
View File
@@ -10,7 +10,6 @@
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0
action_button_name = "Toggle Helmet Light"
siemens_coefficient = 0.9
attack_self(mob/user)
if(!isturf(user.loc))
-5
View File
@@ -11,7 +11,6 @@
heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
strip_delay = 60
siemens_coefficient = 0.7
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/helmet.dmi'
@@ -65,7 +64,6 @@
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | HEADBANGPROTECT
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
strip_delay = 80
/obj/item/clothing/head/helmet/swat
@@ -80,7 +78,6 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
siemens_coefficient = 0.5
strip_delay = 80
species_fit = list("Vox")
sprite_sheets = list(
@@ -104,7 +101,6 @@
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
siemens_coefficient = 1
strip_delay = 80
/obj/item/clothing/head/helmet/roman
@@ -129,7 +125,6 @@
flags = HEADCOVERSEYES | BLOCKHAIR
item_state = "gladiator"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
siemens_coefficient = 1
obj/item/clothing/head/helmet/redtaghelm
name = "red laser tag helmet"
-7
View File
@@ -6,7 +6,6 @@
icon_state = "chef"
item_state = "chef"
desc = "The commander in chef's head wear."
siemens_coefficient = 0.9
strip_delay = 10
put_on_delay = 10
@@ -16,7 +15,6 @@
icon_state = "captain"
desc = "It's good being the king."
item_state = "caphat"
siemens_coefficient = 0.9
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
strip_delay = 60
@@ -31,7 +29,6 @@
name = "head of personnel's cap"
icon_state = "hopcap"
desc = "The symbol of true bureaucratic micromanagement."
siemens_coefficient = 0.9
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
//Nanotrasen Representative
@@ -47,7 +44,6 @@
desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood"
flags = HEADCOVERSEYES | BLOCKHAIR
siemens_coefficient = 0.9
//Chaplain
/obj/item/clothing/head/nun_hood
@@ -55,7 +51,6 @@
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
flags = HEADCOVERSEYES | BLOCKHAIR
siemens_coefficient = 0.9
/obj/item/clothing/head/det_hat
name = "hat"
@@ -63,14 +58,12 @@
icon_state = "detective"
allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen)
armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
//Mime
/obj/item/clothing/head/beret
name = "beret"
desc = "A beret, an artists favorite headwear."
icon_state = "beret"
siemens_coefficient = 0.9
//Security
/obj/item/clothing/head/HoS
-11
View File
@@ -6,7 +6,6 @@
desc = "It's good to be emperor."
item_state = "centhat"
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
siemens_coefficient = 0.9
strip_delay = 80
/obj/item/clothing/head/hairflower
@@ -31,7 +30,6 @@
desc = "It's an amish looking hat."
icon_state = "tophat"
item_state = "that"
siemens_coefficient = 0.9
/obj/item/clothing/head/redcoat
name = "redcoat's hat"
@@ -48,7 +46,6 @@
desc = "These were once used by Plague doctors. They're pretty much useless."
icon_state = "plaguedoctor"
permeability_coefficient = 0.01
siemens_coefficient = 0.9
/obj/item/clothing/head/hasturhood
name = "hastur's hood"
@@ -60,7 +57,6 @@
name = "nurse's hat"
desc = "It allows quick identification of trained medical personnel."
icon_state = "nursehat"
siemens_coefficient = 0.9
/obj/item/clothing/head/syndicatefake
name = "black and red space-helmet replica"
@@ -69,7 +65,6 @@
desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
siemens_coefficient = 2.0
/obj/item/clothing/head/cueball
name = "cueball helmet"
@@ -135,7 +130,6 @@
desc = "A working man's cap."
icon_state = "flat_cap"
item_state = "detective"
siemens_coefficient = 0.9
/obj/item/clothing/head/pirate
name = "pirate hat"
@@ -203,7 +197,6 @@
icon_state = "witch"
item_state = "witch"
flags = BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/chicken
name = "chicken suit head"
@@ -211,7 +204,6 @@
icon_state = "chickenhead"
item_state = "chickensuit"
flags = BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/corgi
name = "corgi suit head"
@@ -219,7 +211,6 @@
icon_state = "corgihead"
item_state = "chickensuit"
flags = BLOCKHAIR | NODROP
siemens_coefficient = 2.0
/obj/item/clothing/head/corgi/en
name = "E-N suit head"
@@ -231,7 +222,6 @@
icon_state = "bearpelt"
item_state = "bearpelt"
flags = BLOCKHAIR
siemens_coefficient = 2.0
/obj/item/clothing/head/xenos
name = "xenos helmet"
@@ -240,7 +230,6 @@
desc = "A helmet made out of chitinous alien hide."
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
siemens_coefficient = 2.0
/obj/item/clothing/head/crown
name = "bananium crown"
@@ -24,7 +24,6 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
action_button_name = "flip welding helmet"
siemens_coefficient = 0.9
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/head.dmi'
@@ -172,7 +171,6 @@
desc = "A pair of kitty ears. Meow!"
icon_state = "kitty"
var/icon/mob
siemens_coefficient = 1.5
/obj/item/clothing/head/kitty/update_icon(var/mob/living/carbon/human/user)
if(!istype(user)) return
-1
View File
@@ -5,7 +5,6 @@
item_state = "helmet"
item_color = "cargo"
var/flipped = 0
siemens_coefficient = 0.9
dropped()
src.icon_state = "[item_color]soft"
-1
View File
@@ -24,7 +24,6 @@
flags = BLOCKHAIR
flags_inv = HIDEFACE
w_class = 2
siemens_coefficient = 3.0
/obj/item/clothing/mask/luchador/tecnicos
name = "Tecnicos Mask"
-5
View File
@@ -8,7 +8,6 @@
item_state = "gas_alt"
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
siemens_coefficient = 0.9
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/mask.dmi'
@@ -68,7 +67,6 @@
item_state = "bane_mask"
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
siemens_coefficient = 0.9
//Plague Dr suit can be found in clothing/suits/bio.dm
@@ -84,14 +82,12 @@
name = "\improper SWAT mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
siemens_coefficient = 0.7
species_fit = list("Vox")
/obj/item/clothing/mask/gas/syndicate
name = "syndicate mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "swat"
siemens_coefficient = 0.7
strip_delay = 60
species_fit = list("Vox")
@@ -165,7 +161,6 @@
name = "Death Commando Mask"
icon_state = "death_commando_mask"
item_state = "death_commando_mask"
siemens_coefficient = 0.2
species_fit = list("Vox")
/obj/item/clothing/mask/gas/cyborg
@@ -94,7 +94,6 @@
flags = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
siemens_coefficient = 0
/obj/item/clothing/mask/pig
name = "pig mask"
@@ -104,7 +103,6 @@
flags = BLOCKHAIR
flags_inv = HIDEFACE
w_class = 2
siemens_coefficient = 0.9
/obj/item/clothing/mask/horsehead
@@ -115,7 +113,6 @@
flags = BLOCKHAIR
flags_inv = HIDEFACE
w_class = 2
siemens_coefficient = 0.9
var/voicechange = 0
var/temporaryname = " the Horse"
var/originalname = ""
+1 -5
View File
@@ -9,7 +9,6 @@
flags = NOSLIP
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
siemens_coefficient = 0.8
species_restricted = null
silence_steps = 1
@@ -25,7 +24,6 @@
item_state = "jackboots"
armor = list(melee = 50, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 10, rad = 0)
species_restricted = null //Syndicate tech means even Tajarans can kick ass with these
siemens_coefficient = 0.6
strip_delay = 70
/obj/item/clothing/shoes/combat/swat //overpowered boots for death squads
@@ -87,7 +85,6 @@
icon_state = "jackboots"
item_state = "jackboots"
item_color = "hosred"
siemens_coefficient = 0.7
strip_delay = 50
put_on_delay = 50
var/footstep = 1
@@ -117,7 +114,6 @@
icon_state = "cult"
item_state = "cult"
item_color = "cult"
siemens_coefficient = 0.7
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
@@ -197,4 +193,4 @@
reqs = list(/obj/item/stack/tape_roll = 10)
tools = list(/obj/item/weapon/wirecutters)
time = 40
time = 40
@@ -86,7 +86,6 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
slowdown = 2
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.6
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
species_restricted = list("Vox", "Vox Armalis")
@@ -97,7 +96,6 @@
/obj/item/clothing/head/helmet/space/vox
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.6
flags = HEADCOVERSEYES|STOPSPRESSUREDMAGE
species_restricted = list("Vox","Vox Armalis")
sprite_sheets = list(
-2
View File
@@ -5,7 +5,6 @@
icon_state = "rig0-ert_commander"
item_state = "helm-command"
armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60)
siemens_coefficient = 0.6
rig_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
var/obj/machinery/camera/camera
strip_delay = 130
@@ -37,7 +36,6 @@
/obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \
/obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \
/obj/item/weapon/gun/energy/advtaser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun)
siemens_coefficient = 0.6
strip_delay = 130
//Commander
@@ -27,7 +27,6 @@
allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
slowdown = 1
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
siemens_coefficient = 0.7
species_restricted = list("exclude", "Diona", "Wryn")
species_fit = list("Vox")
sprite_sheets = list(
@@ -42,7 +41,6 @@
icon_state = "deathsquad"
item_state = "deathsquad"
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100)
siemens_coefficient = 0.2
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
vision_flags = SEE_MOBS
@@ -67,7 +65,6 @@
desc = "An armored beret commonly used by special operations officers."
icon_state = "beret_badge"
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.9
/obj/item/clothing/suit/space/deathsquad/officer
name = "officer jacket"
@@ -104,7 +101,6 @@
item_state = "pirate"
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
siemens_coefficient = 0.9
strip_delay = 40
put_on_delay = 20
@@ -117,7 +113,6 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.9
strip_delay = 40
put_on_delay = 20
@@ -298,11 +298,9 @@
icon_state = "plasmaman_Nukeops"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs)
siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/space/eva/plasmaman/nuclear
name = "blood red plasmaman helmet"
icon_state = "plasmaman_Nukeops_helmet0"
base_state = "plasmaman_Nukeops_helmet"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
siemens_coefficient = 0.6
+1 -4
View File
@@ -54,6 +54,7 @@
slowdown = 2
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
siemens_coefficient = 0
species_restricted = list("exclude","Diona","Wryn")
sprite_sheets = list(
@@ -372,7 +373,6 @@
item_color = "wiz"
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0.7
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
@@ -391,7 +391,6 @@
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
unacidable = 1
siemens_coefficient = 0.7
sprite_sheets = null
//Medical Rig
@@ -423,7 +422,6 @@
item_state = "sec_helm"
item_color = "sec"
armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50)
siemens_coefficient = 0.7
/obj/item/clothing/suit/space/rig/security
icon_state = "rig-sec"
@@ -432,7 +430,6 @@
item_state = "sec_hardsuit"
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/restraints/handcuffs)
siemens_coefficient = 0.7
//Atmospherics Rig (BS12)
@@ -6,7 +6,6 @@
item_state = "syndicate"
desc = "Has a tag: Totally not property of an enemy corporation, honest."
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.8
/obj/item/clothing/suit/space/syndicate
name = "red space suit"
@@ -17,7 +16,6 @@
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
slowdown = 1
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.8
//Green syndicate space suit
@@ -78,7 +76,6 @@ obj/item/clothing/head/helmet/space/syndicate/black/strike
name = "Syndicate Strike Team commando helmet"
desc = "A heavily armored black helmet that is only given to high-ranking Syndicate operatives."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) //Matches DS gear.
siemens_coefficient = 0.2
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
@@ -91,7 +88,6 @@ obj/item/clothing/suit/space/syndicate/black/strike
name = "Syndicate Strike Team commando space suit"
desc = "A heavily armored, black space suit that is only given to high-ranking Syndicate operatives."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) //Matches DS gear.
siemens_coefficient = 0.2
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
@@ -153,7 +149,6 @@ obj/item/clothing/head/helmet/space/syndicate/black/red/strike
name = "Syndicate Strike Team leader helmet"
desc = "A heavily armored, black and red space helmet that is only given to elite Syndicate operatives, it looks particularly menacing."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) //Matches DS gear.
siemens_coefficient = 0.2
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
@@ -166,7 +161,6 @@ obj/item/clothing/suit/space/syndicate/black/red/strike
name = "Syndicate Strike Team leader space suit"
desc = "A heavily armored, black and red space suit that is only given to elite Syndicate operatives, it looks particularly menacing."
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) //Matches DS gear.
siemens_coefficient = 0.2
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
-10
View File
@@ -6,7 +6,6 @@
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
heat_protection = UPPER_TORSO|LOWER_TORSO
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
siemens_coefficient = 0.6
strip_delay = 60
put_on_delay = 40
@@ -63,7 +62,6 @@
flags_inv = HIDEJUMPSUIT
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
siemens_coefficient = 0.6
strip_delay = 80
/obj/item/clothing/suit/armor/hos/alt
@@ -96,7 +94,6 @@
icon_state = "jensencoat"
item_state = "jensencoat"
flags_inv = 0
siemens_coefficient = 0.6
/obj/item/clothing/suit/armor/vest/warden
name = "Warden's armored jacket"
@@ -132,7 +129,6 @@
slowdown = 1
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0.5
strip_delay = 80
put_on_delay = 60
@@ -143,7 +139,6 @@
item_state = "armor"
blood_overlay_type = "armor"
armor = list(melee = 25, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0)
siemens_coefficient = 0.7
strip_delay = 70
put_on_delay = 50
@@ -155,7 +150,6 @@
blood_overlay_type = "armor"
var/hit_reflect_chance = 40
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0
/obj/item/clothing/suit/armor/laserproof/IsReflect(var/def_zone)
if(!(def_zone in list("chest", "groin"))) //If not shot where ablative is covering you, you don't get the reflection bonus!
@@ -225,7 +219,6 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
siemens_coefficient = 0
/obj/item/clothing/suit/armor/heavy
name = "heavy armor"
@@ -239,7 +232,6 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
slowdown = 3
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 0
/obj/item/clothing/suit/armor/tdome
armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
@@ -254,14 +246,12 @@
desc = "Armor worn by the red Thunderodome team"
icon_state = "tdred"
item_state = "tdred"
siemens_coefficient = 1
/obj/item/clothing/suit/armor/tdome/green
name = "Green Thunderdome Armor"
desc = "Armor worn by the green Thunderodome team"
icon_state = "tdgreen"
item_state = "tdgreen"
siemens_coefficient = 1
//Non-hardsuit ERT armor.
/obj/item/clothing/suit/armor/vest/ert
-2
View File
@@ -7,7 +7,6 @@
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR | THICKMATERIAL
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
siemens_coefficient = 0.9
/obj/item/clothing/suit/bio_suit
name = "bio suit"
@@ -23,7 +22,6 @@
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
siemens_coefficient = 0.9
strip_delay = 70
put_on_delay = 70
+1 -19
View File
@@ -16,7 +16,6 @@
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
siemens_coefficient = 3.0
/obj/item/clothing/suit/redtag
name = "red laser tag armour"
@@ -26,7 +25,6 @@
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
siemens_coefficient = 3.0
/*
* Costume
@@ -146,7 +144,6 @@
item_state = "chickensuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
flags_inv = HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
/obj/item/clothing/suit/corgisuit
name = "Corgi Suit"
@@ -155,7 +152,6 @@
item_state = "chickensuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
flags_inv = HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
flags = NODROP
/obj/item/clothing/suit/corgisuit/en
@@ -184,7 +180,6 @@
item_state = "monkeysuit"
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 2.0
/obj/item/clothing/suit/holidaypriest
@@ -336,35 +331,30 @@
desc = "A rather skimpy pink swimsuit."
icon_state = "stripper_p_under"
item_color = "stripper_p"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/stripper_green
name = "green swimsuit"
desc = "A rather skimpy green swimsuit."
icon_state = "stripper_g_under"
item_color = "stripper_g"
siemens_coefficient = 1
/obj/item/clothing/suit/stripper/stripper_pink
name = "pink skimpy dress"
desc = "A rather skimpy pink dress."
icon_state = "stripper_p_over"
item_state = "stripper_p"
siemens_coefficient = 1
/obj/item/clothing/suit/stripper/stripper_green
name = "green skimpy dress"
desc = "A rather skimpy green dress."
icon_state = "stripper_g_over"
item_state = "stripper_g"
siemens_coefficient = 1
/obj/item/clothing/under/stripper/mankini
name = "the mankini"
desc = "No honest man would wear this abomination"
icon_state = "mankini"
item_color = "mankini"
siemens_coefficient = 1
/obj/item/clothing/suit/jacket/miljacket
name = "military jacket"
@@ -381,45 +371,39 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
flags = ONESIZEFITSALL
siemens_coefficient = 2.0
//swimsuit
/obj/item/clothing/under/swimsuit/
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/black
name = "black swimsuit"
desc = "An oldfashioned black swimsuit."
icon_state = "swim_black"
item_color = "swim_black"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/blue
name = "blue swimsuit"
desc = "An oldfashioned blue swimsuit."
icon_state = "swim_blue"
item_color = "swim_blue"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/purple
name = "purple swimsuit"
desc = "An oldfashioned purple swimsuit."
icon_state = "swim_purp"
item_color = "swim_purp"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/green
name = "green swimsuit"
desc = "An oldfashioned green swimsuit."
icon_state = "swim_green"
item_color = "swim_green"
siemens_coefficient = 1
/obj/item/clothing/under/swimsuit/red
name = "red swimsuit"
desc = "An oldfashioned red swimsuit."
icon_state = "swim_red"
item_color = "swim_red"
siemens_coefficient = 1
/obj/item/clothing/suit/storage/mercy_hoodie
name = "Mercy Robe"
@@ -434,7 +418,6 @@
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
siemens_coefficient = 0.9
/obj/item/clothing/head/mercy_hood
name = "Mercy Hood"
@@ -445,7 +428,6 @@
flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
siemens_coefficient = 0.9
/obj/item/clothing/suit/jacket
name = "bomber jacket"
-2
View File
@@ -63,7 +63,6 @@
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
siemens_coefficient = 0
strip_delay = 70
put_on_delay = 70
@@ -84,7 +83,6 @@
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
siemens_coefficient = 0
strip_delay = 70
put_on_delay = 70
+1 -14
View File
@@ -7,7 +7,6 @@
armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20)
unacidable = 1
//Not given any special protective value since the magic robes are full-body protection --NEO
siemens_coefficient = 0.8
strip_delay = 50
put_on_delay = 50
@@ -15,14 +14,12 @@
name = "red wizard hat"
desc = "Strange-looking, red, hat-wear that most certainly belongs to a real magic user."
icon_state = "redwizard"
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/clown
name = "purple wizard hat"
desc = "Strange-looking purple hat-wear that most certainly belongs to a real magic user."
icon_state = "wizhatclown"
item_state = "wizhatclown" // cheating
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/fake
name = "wizard hat"
@@ -36,20 +33,17 @@
name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
icon_state = "marisa"
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/magus
name = "Magus Helm"
desc = "A mysterious helmet that hums with an unearthly power"
icon_state = "magus"
item_state = "magus"
siemens_coefficient = 0.8
/obj/item/clothing/head/wizard/amp
name = "psychic amplifier"
desc = "A crown-of-thorns psychic amplifier. Kind of looks like a tiara having sex with an industrial robot."
icon_state = "amp"
siemens_coefficient = 0.8
/obj/item/clothing/suit/wizrobe
name = "wizard robe"
@@ -63,7 +57,6 @@
allowed = list(/obj/item/weapon/teleportation_scroll)
flags_inv = HIDEJUMPSUIT
unacidable = 1
siemens_coefficient = 0.8
strip_delay = 50
put_on_delay = 50
@@ -113,8 +106,6 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
siemens_coefficient = 1.0
/obj/item/clothing/head/wizard/marisa/fake
name = "Witch Hat"
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
@@ -124,8 +115,6 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
siemens_coefficient = 1.0
/obj/item/clothing/suit/wizrobe/marisa/fake
name = "Witch Robe"
desc = "Magic is all about the spell power, ZE!"
@@ -134,6 +123,4 @@
gas_transfer_coefficient = 1
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
siemens_coefficient = 1.0
unacidable = 0
-1
View File
@@ -6,7 +6,6 @@
item_color = "black"
desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist."
origin_tech = "syndicate=3"
siemens_coefficient = 0.8
var/list/clothing_choices = list()
New()
@@ -17,7 +17,6 @@
item_color = "warden"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
strip_delay = 50
/obj/item/clothing/under/rank/security
@@ -28,7 +27,6 @@
item_color = "secred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
strip_delay = 50
/obj/item/clothing/under/rank/dispatch
@@ -39,7 +37,6 @@
item_color = "dispatch"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security2
name = "security officer's uniform"
@@ -49,8 +46,6 @@
item_color = "redshirt2"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
/obj/item/clothing/under/rank/security/corp
icon_state = "sec_corporate"
item_state = "sec_corporate"
@@ -72,7 +67,6 @@
item_color = "detective"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
strip_delay = 50
species_fit = list("Vox")
sprite_sheets = list(
@@ -90,7 +84,6 @@
item_color = "hosred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.8
strip_delay = 60
/obj/item/clothing/under/rank/head_of_security/corp
@@ -105,7 +98,6 @@
icon_state = "jensen"
item_state = "jensen"
item_color = "jensen"
siemens_coefficient = 0.6
flags = ONESIZEFITSALL
//Paradise Station
+1 -5
View File
@@ -6,7 +6,6 @@
item_color = "syndicate"
has_sensor = 0
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
/obj/item/clothing/under/syndicate/combat
name = "combat turtleneck"
@@ -16,7 +15,4 @@
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
icon_state = "tactifool"
item_state = "bl_suit"
item_color = "tactifool"
siemens_coefficient = 1
item_color = "tactifool"
-1
View File
@@ -191,7 +191,6 @@
has_sensor = 1 // Jumpsuit has no sensor by default
displays_id = 0 // Purely astetic, the ID does not show up on the player sprite when equipped. Examining still reveals it.
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Standard Security jumpsuit stats
siemens_coefficient = 0
/obj/item/clothing/under/fluff/kharshai // Kharshai: Athena Castile
name = "Castile formal outfit"
+9 -5
View File
@@ -114,12 +114,13 @@ mob/living
return
return
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null,var/override = 0)
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null,var/override = 0, tesla_shock = 0)
if(status_flags & GODMODE) //godmode
return 0
if(NO_SHOCK in mutations) //shockproof
return 0
shock_damage *= siemens_coeff
if(shock_damage<1 && !override)
return 0
@@ -147,11 +148,13 @@ mob/living
jitteriness += 1000 //High numbers for violent convulsions
do_jitter_animation(jitteriness)
stuttering += 2
Stun(2)
if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5))
Stun(2)
spawn(20)
jitteriness -= 990 //Still jittery, but vastly less
Stun(3)
Weaken(3)
jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less
if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5))
Stun(3)
Weaken(3)
if (shock_damage > 200)
src.visible_message(
"\red [src] was arc flashed by the [source]!", \
@@ -166,6 +169,7 @@ mob/living
return shock_damage
/mob/living/carbon/proc/swap_hand()
var/obj/item/item_in_hand = src.get_active_hand()
if(item_in_hand) //this segment checks if the item in your hand is twohanded.
+14 -2
View File
@@ -742,7 +742,7 @@
//Removed the horrible safety parameter. It was only being used by ninja code anyways.
//Now checks siemens_coefficient of the affected area by default
/mob/living/carbon/human/electrocute_act(var/shock_damage, var/obj/source, var/base_siemens_coeff = 1.0, var/def_zone = null,var/override = 0)
/mob/living/carbon/human/electrocute_act(var/shock_damage, var/obj/source, var/base_siemens_coeff = 1.0, var/def_zone = null,var/override = 0, tesla_shock = 0)
if(status_flags & GODMODE) //godmode
return 0
@@ -755,7 +755,19 @@
var/obj/item/organ/external/affected_organ = get_organ(check_zone(def_zone))
var/siemens_coeff = base_siemens_coeff * get_siemens_coefficient_organ(affected_organ)
return ..(shock_damage, source, siemens_coeff, def_zone,override)
if(tesla_shock)
var/total_coeff = 1
if(gloves)
var/obj/item/clothing/gloves/G = gloves
if(G.siemens_coefficient <= 0)
total_coeff -= 0.5
if(wear_suit)
var/obj/item/clothing/suit/S = wear_suit
if(S.siemens_coefficient <= 0)
total_coeff -= 0.95
siemens_coeff = total_coeff
return ..(shock_damage, source, siemens_coeff, def_zone, override, tesla_shock)
/mob/living/carbon/human/Topic(href, href_list)
+1 -1
View File
@@ -65,7 +65,7 @@
apply_damage(P.damage, P.damage_type, def_zone, armor)
return P.on_hit(src, armor, def_zone)
/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, tesla_shock = 0)
return 0 //only carbon liveforms have this proc
/mob/living/emp_act(severity)
-1
View File
@@ -7,5 +7,4 @@
item_state = "s-ninja_hood"
armor = list(melee = 60, bullet = 60, laser = 45, energy = 15, bomb = 30, bio = 30, rad = 25)
unacidable = 1
siemens_coefficient = 0.2
blockTracking = 1
+1 -2
View File
@@ -11,5 +11,4 @@ Contents:
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
icon_state = "s-ninja(norm)"
item_state = "s-ninja_mask"
unacidable = 1
siemens_coefficient = 0.2
unacidable = 1
-1
View File
@@ -6,7 +6,6 @@
permeability_coefficient = 0.01
flags = NOSLIP
armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.2
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET
-1
View File
@@ -16,7 +16,6 @@ Contents:
slowdown = 0
unacidable = 1
armor = list(melee = 60, bullet = 60, laser = 45,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.2
var/suitActive = 0
var/suitBusy = 0
+5 -3
View File
@@ -8,14 +8,16 @@
density = 1
use_power = 0
var/energy = 0
var/creation_type = /obj/singularity
/obj/machinery/the_singularitygen/process()
var/turf/T = get_turf(src)
if(src.energy >= 200)
message_admins("A singularity has been created at [x], [y], [z] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
investigate_log("A singularity has been created at [x], [y], [z]","singulo")
message_admins("A [creation_type] has been created at [x], [y], [z] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
investigate_log("A [creation_type] has been created at [x], [y], [z]","singulo")
new /obj/singularity/(T, 50)
var/obj/singularity/S = new creation_type(T, 50)
transfer_fingerprints_to(S)
if(src) qdel(src)
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user, params)
+78
View File
@@ -0,0 +1,78 @@
/obj/machinery/power/tesla_coil
name = "tesla coil"
desc = "For the union!"
icon = 'icons/obj/tesla_engine/tesla_coil.dmi'
icon_state = "coil"
anchored = 0
density = 1
var/power_loss = 2
var/input_power_multiplier = 1
/obj/machinery/power/tesla_coil/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/tesla_coil(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
RefreshParts()
/obj/machinery/power/tesla_coil/RefreshParts()
var/power_multiplier = 0
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
power_multiplier += C.rating
input_power_multiplier = power_multiplier
/obj/machinery/power/tesla_coil/attackby(obj/item/W, mob/user, params)
if(default_deconstruction_screwdriver(user, "coil", "coil", W))
return
if(exchange_parts(user, W))
return
if(default_unfasten_wrench(user, W))
if(!anchored)
disconnect_from_network()
else
connect_to_network()
return
default_deconstruction_crowbar(W)
/obj/machinery/power/tesla_coil/tesla_act(var/power)
being_shocked = 1
var/power_produced = power / power_loss
add_avail(power_produced*input_power_multiplier)
flick("coilhit", src)
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 5, power_produced)
spawn(10)
being_shocked = 0
/obj/machinery/power/grounding_rod
name = "Grounding Rod"
desc = "Keep an area from being fried from Edison's Bane."
icon = 'icons/obj/tesla_engine/tesla_coil.dmi'
icon_state = "grounding_rod"
anchored = 0
density = 1
/obj/machinery/power/grounding_rod/New()
..()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/grounding_rod(null)
component_parts += new /obj/item/weapon/stock_parts/capacitor(null)
RefreshParts()
/obj/machinery/power/grounding_rod/attackby(obj/item/W, mob/user, params)
if(default_deconstruction_screwdriver(user, "grounding_rod", "grounding_rod", W))
return
if(exchange_parts(user, W))
return
if(default_unfasten_wrench(user, W))
return
default_deconstruction_crowbar(W)
/obj/machinery/power/grounding_rod/tesla_act(var/power)
flick("coil_shock_1", src)
+209
View File
@@ -0,0 +1,209 @@
#define TESLA_DEFAULT_POWER 3476520
#define TESLA_MINI_POWER 1738260
var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics,
/obj/machinery/power/emitter,
/obj/machinery/field/generator,
/mob/living/simple_animal,
/obj/machinery/particle_accelerator/control_box,
/obj/structure/particle_accelerator/fuel_chamber,
/obj/structure/particle_accelerator/particle_emitter/center,
/obj/structure/particle_accelerator/particle_emitter/left,
/obj/structure/particle_accelerator/particle_emitter/right,
/obj/structure/particle_accelerator/power_box,
/obj/structure/particle_accelerator/end_cap,
/obj/machinery/field/containment,
/obj/structure/disposalpipe)
/obj/singularity/energy_ball
name = "energy ball"
desc = "An energy ball."
icon = 'icons/obj/tesla_engine/energy_ball.dmi'
icon_state = "energy_ball"
pixel_x = -32
pixel_y = -32
current_size = STAGE_TWO
move_self = 1
grav_pull = 0
contained = 0
density = 1
var/list/orbiting_balls = list()
var/produced_power
var/is_orbiting
/obj/singularity/energy_ball/Destroy()
for(var/obj/singularity/energy_ball/EB in orbiting_balls)
qdel(EB)
..()
/obj/singularity/energy_ball/process()
if(!is_orbiting)
handle_energy()
var/amount_to_move = 2 + orbiting_balls.len * 2
var/what_does_the_scouter_say_about_the_balls_power_level = (TESLA_DEFAULT_POWER + (TESLA_MINI_POWER * orbiting_balls.len))
move_the_basket_ball(amount_to_move)
pixel_x = 0
pixel_y = 0
playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 7, what_does_the_scouter_say_about_the_balls_power_level)
pixel_x = -32
pixel_y = -32
energy += rand(1,3) // ensure it generates energy without needing to be blasted by the PA too much due to its size, and that a tesla engine will always get bigger over time
else
energy = 0 // ensure we dont have miniballs of miniballs
return
/obj/singularity/energy_ball/examine(mob/user)
..()
if(orbiting_balls.len)
user << "The amount of orbiting mini-balls is [orbiting_balls.len]."
/obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount)
for(var/i = 0, i < move_amount, i++)
var/move_dir = pick(alldirs)
var/turf/T = get_step(src,move_dir)
if(can_move(T))
loc = get_step(src,move_dir)
/obj/singularity/energy_ball/proc/handle_energy()
if(energy >= 300)
energy -= 300
playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 5)
spawn(100)
var/obj/singularity/energy_ball/EB = new(loc)
orbiting_balls.Add(EB)
EB.transform *= pick(0.3,0.4,0.5,0.6,0.7)
EB.is_orbiting = 1
var/icon/I = icon(icon,icon_state,dir)
var/orbitsize = (I.Width()+I.Height())*pick(0.5,0.6,0.7)
orbitsize -= (orbitsize/world.icon_size)*(world.icon_size*0.25)
spawn(1)
EB.orbit(src,orbitsize, pick(FALSE,TRUE), rand(10,25), pick(3,4,5,6,36))
/obj/singularity/energy_ball/Bump(atom/A)
dust_mobs(A)
/obj/singularity/energy_ball/Bumped(atom/A)
dust_mobs(A)
/obj/singularity/energy_ball/proc/dust_mobs(atom/A)
if(istype(A, /mob/living/carbon))
var/mob/living/carbon/C = A
C.dust()
return
/proc/get_closest_atom(type, list, source)
var/closest_atom
var/closest_distance
for(var/A in list)
if(!istype(A, type))
continue
var/distance = get_dist(source, A)
if(!closest_distance)
closest_distance = distance
closest_atom = A
else
if(closest_distance > distance)
closest_distance = distance
closest_atom = A
return closest_atom
/proc/tesla_zap(var/atom/source, zap_range = 3, power)
if(power < 500)
return
var/list/tesla_coils = list()
var/list/grounding_rods = list()
var/list/potential_machine_zaps = list()
var/list/potential_mob_zaps = list()
var/list/potential_structure_zaps = list()
var/closest_atom
for(var/atom/A in oview(source, zap_range))
if(istype(A, /obj/machinery/power/tesla_coil))
var/obj/machinery/power/tesla_coil/C = A
if(C.being_shocked)
continue
tesla_coils.Add(C)
continue
if(istype(A, /obj/machinery/power/grounding_rod))
var/obj/machinery/power/grounding_rod/R = A
grounding_rods.Add(R)
continue
if(istype(A, /obj/machinery))
var/obj/machinery/M = A
if(is_type_in_list(M, blacklisted_tesla_types))
continue
if(M.being_shocked)
continue
potential_machine_zaps.Add(M)
continue
if(istype(A, /obj/structure))
var/obj/structure/M = A
if(is_type_in_list(M, blacklisted_tesla_types))
continue
if(M.being_shocked)
continue
potential_structure_zaps.Add(M)
continue
if(istype(A, /mob/living))
var/mob/living/L = A
if(L.stat == DEAD)
continue
if(is_type_in_list(L, blacklisted_tesla_types))
continue
potential_mob_zaps.Add(L)
continue
closest_atom = get_closest_atom(/obj/machinery/power/tesla_coil, tesla_coils, source)
if(closest_atom && istype(closest_atom, /obj/machinery/power/tesla_coil))
var/obj/machinery/power/tesla_coil/C = closest_atom
source.Beam(C,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
C.tesla_act(power)
return
if(!closest_atom)
closest_atom = get_closest_atom(/obj/machinery/power/grounding_rod, grounding_rods, source)
if(closest_atom && istype(closest_atom, /obj/machinery/power/grounding_rod))
var/obj/machinery/power/grounding_rod/R = closest_atom
source.Beam(R,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
R.tesla_act(power)
return
if(!closest_atom)
closest_atom = get_closest_atom(/mob/living, potential_mob_zaps, source)
if(closest_atom && istype(closest_atom, /mob/living))
var/mob/living/L = closest_atom
var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5,5)
source.Beam(L,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
L.electrocute_act(shock_damage, source, 1, tesla_shock = 1)
if(istype(L, /mob/living/silicon))
var/mob/living/silicon/S = L
S.emp_act(2)
tesla_zap(S, 7, power / 1.5) // metallic folks bounce it further
else
tesla_zap(L, 5, power / 1.5)
return
if(!closest_atom)
closest_atom = get_closest_atom(/obj/machinery, potential_machine_zaps, source)
if(closest_atom)
var/obj/machinery/M = closest_atom
source.Beam(M,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
M.tesla_act(power)
if(prob(85))
M.emp_act(2)
else
if(prob(50))
M.ex_act(3)
else
if(prob(90))
M.ex_act(2)
else
M.ex_act(1)
return
if(!closest_atom)
closest_atom = get_closest_atom(/obj/structure, potential_structure_zaps, source)
if(closest_atom)
var/obj/structure/S = closest_atom
source.Beam(S,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5)
S.tesla_act(power)
return
+6
View File
@@ -0,0 +1,6 @@
/obj/machinery/the_singularitygen/tesla
name = "energy ball generator"
desc = "Makes the wardenclyffe look like a child's plaything when shot with a particle accelerator."
icon = 'icons/obj/tesla_engine/tesla_generator.dmi'
icon_state = "TheSingGen"
creation_type = /obj/singularity/energy_ball
@@ -92,3 +92,23 @@
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pacman/super
category = list("Engineering Machinery")
/datum/design/tesla_coil
name = "Machine Design (Tesla Coil Board)"
desc = "The circuit board for a tesla coil."
id = "tesla_coil"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/tesla_coil
category = list("Engineering Machinery")
/datum/design/grounding_rod
name = "Machine Design (Grounding Rod Board)"
desc = "The circuit board for a grounding rod."
id = "grounding_rod"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/grounding_rod
category = list("Engineering Machinery")