New turret icons & turret code tweaks (#3416)

Adds flooring to the turret with "decorative" conduits.

Adds darkening and brightening animation when turret opens/closes to indicate the turret rising up or down.

Made new construction phase depicting nearly all steps visually (Apart from adding the prox sensor.)

Made sure almost every gun that can be turreted has a relevant sprite. These are based on gun sprites. Changing those might cause turrets to not reflect the gun look.

Some guns share sprites, some were made unturretable.

Added new set of vars on the /gun/energy level, since the /gun level had few essential vars missing and I am not really looking for any other code rewrites regarding this right now. Should not be hard to move them step up, if ever needed.

Turrets that have only one shooting mode have now the changing mode option greyed out.

Also removed leftover references to two energy carbine subtypes and removed one global list.
This commit is contained in:
TheGreatJorge
2017-09-22 22:11:41 +02:00
committed by Erki
parent c13c0f84fb
commit 0732abb600
15 changed files with 208 additions and 128 deletions

View File

@@ -26,14 +26,6 @@
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \
in your hand. To recharge this weapon, use a weapon recharger."
/obj/item/weapon/gun/energy/gun/taser
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger."
/obj/item/weapon/gun/energy/gun/stunrevolver
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger."
/obj/item/weapon/gun/energy/gun/nuclear
description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \
then click where you want to fire. Most energy weapons can fire through windows harmlessly. To switch between stun and lethal, click the weapon \

View File

@@ -9,7 +9,7 @@
var/charge_cost = 200 //How much energy is needed to fire.
var/max_shots = 10 //Determines the capacity of the weapon's power cell. Specifying a cell_type overrides this value.
var/cell_type = null
var/projectile_type = /obj/item/projectile/beam/practice
var/projectile_type = /obj/item/projectile/beam/practice //also passed to turrets
var/modifystate
var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge
@@ -19,6 +19,14 @@
var/recharge_time = 4
var/charge_tick = 0
//vars passed to turrets
var/can_turret = 0 //1 allows you to attach the gun on a turret
var/secondary_projectile_type = null //if null, turret defaults to projectile_type
var/secondary_fire_sound = null //if null, turret defaults to fire_sound
var/can_switch_modes = 0 //1 allows switching lethal and stun modes
var/turret_sprite_set = "carbine" //set of sprites to use for the turret gun
var/turret_is_lethal = 1 //is the gun in lethal (secondary) mode by default
/obj/item/weapon/gun/energy/switch_firemodes()
. = ..()
if(.)

View File

@@ -10,11 +10,14 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
projectile_type = /obj/item/projectile/beam/midlaser
can_turret = 1
turret_sprite_set = "laser"
/obj/item/weapon/gun/energy/laser/mounted
name = "mounted laser carbine"
self_recharge = 1
use_external_power = 1
can_turret = 0
/obj/item/weapon/gun/energy/laser/practice
name = "practice laser carbine"
@@ -31,6 +34,8 @@ obj/item/weapon/gun/energy/retro
w_class = 3
projectile_type = /obj/item/projectile/beam
fire_delay = 10 //old technology
can_turret = 1
turret_sprite_set = "retro"
/obj/item/weapon/gun/energy/captain
name = "antique laser gun"
@@ -45,6 +50,8 @@ obj/item/weapon/gun/energy/retro
origin_tech = null
max_shots = 5 //to compensate a bit for self-recharging
self_recharge = 1
can_turret = 1
turret_sprite_set = "captain"
/obj/item/weapon/gun/energy/lasercannon
name = "laser cannon"
@@ -58,12 +65,15 @@ obj/item/weapon/gun/energy/retro
charge_cost = 400
max_shots = 5
fire_delay = 20
can_turret = 1
turret_sprite_set = "cannon"
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
self_recharge = 1
use_external_power = 1
recharge_time = 10
can_turret = 0
/obj/item/weapon/gun/energy/xray
name = "xray laser gun"
@@ -76,6 +86,8 @@ obj/item/weapon/gun/energy/retro
charge_cost = 100
max_shots = 20
fire_delay = 1
can_turret = 1
turret_sprite_set = "xray"
/obj/item/weapon/gun/energy/xray/mounted
name = "mounted xray laser gun"
@@ -83,6 +95,7 @@ obj/item/weapon/gun/energy/retro
self_recharge = 1
use_external_power = 1
recharge_time = 5
can_turret = 0
/obj/item/weapon/gun/energy/sniperrifle
name = "marksman energy rifle"
@@ -100,6 +113,8 @@ obj/item/weapon/gun/energy/retro
w_class = 4
accuracy = -5 //shooting at the hip
scoped_accuracy = 0
can_turret = 1
turret_sprite_set = "sniper"
fire_delay_wielded = 35
accuracy_wielded = -3
@@ -143,6 +158,8 @@ obj/item/weapon/gun/energy/retro
move_delay = 0
fire_delay = 2
dispersion = list(1.0, -1.0, 2.0, -2.0)
can_turret = 1
turret_sprite_set = "laser"
////////Laser Tag////////////////////
@@ -169,9 +186,15 @@ obj/item/weapon/gun/energy/retro
item_state = "bluetag"
projectile_type = /obj/item/projectile/beam/lastertag/blue
required_vest = /obj/item/clothing/suit/bluetag
can_turret = 1
turret_is_lethal = 0
turret_sprite_set = "blue"
/obj/item/weapon/gun/energy/lasertag/red
icon_state = "redtag"
item_state = "redtag"
projectile_type = /obj/item/projectile/beam/lastertag/red
required_vest = /obj/item/clothing/suit/redtag
can_turret = 1
turret_is_lethal = 0
turret_sprite_set = "red"

View File

@@ -6,6 +6,11 @@
fire_sound = 'sound/weapons/Taser.ogg'
slot_flags = SLOT_BELT
max_shots = 10
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam
secondary_fire_sound = 'sound/weapons/Laser.ogg'
can_switch_modes = 1
turret_is_lethal = 0
projectile_type = /obj/item/projectile/beam/stun
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
@@ -22,6 +27,7 @@
name = "mounted energy gun"
self_recharge = 1
use_external_power = 1
can_turret = 0
/obj/item/weapon/gun/energy/gun/nuclear
name = "advanced energy gun"
@@ -33,6 +39,7 @@
self_recharge = 1
modifystate = null
var/reliability = 95
turret_sprite_set = "nuclear"
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
@@ -110,6 +117,12 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
max_shots = 5
fire_delay = 4
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam/pistol
secondary_fire_sound = 'sound/weapons/Laser.ogg'
can_switch_modes = 1
turret_sprite_set = "carbine"
turret_is_lethal = 0
projectile_type = /obj/item/projectile/beam/stun
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)

View File

@@ -9,6 +9,12 @@
projectile_type = /obj/item/projectile/beam
sel_mode = 2
max_shots = 10
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam/pulse
secondary_fire_sound = 'sound/weapons/pulse.ogg'
can_switch_modes = 0
turret_sprite_set = "pulse"
turret_is_lethal = 1
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', fire_delay=null, charge_cost=null),
@@ -22,6 +28,7 @@
self_recharge = 1
use_external_power = 1
recharge_time = 10
can_turret = 0
/obj/item/weapon/gun/energy/pulse/pistol
name = "pulse pistol"

View File

@@ -10,6 +10,12 @@
max_shots = 20
fire_delay = 6
accuracy = -2
can_turret = 1
secondary_projectile_type = /obj/item/projectile/beam
secondary_fire_sound = 'sound/weapons/Laser.ogg'
can_switch_modes = 1
turret_sprite_set = "carbine"
turret_is_lethal = 0
fire_delay_wielded = 1
accuracy_wielded = 0
@@ -50,6 +56,11 @@
fire_sound = 'sound/weapons/Laser.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam
secondary_projectile_type = null
secondary_fire_sound = null
can_switch_modes = 0
turret_sprite_set = "laser"
turret_is_lethal = 1
firemodes = list()
modifystate = null
@@ -67,6 +78,11 @@
max_shots = 5
fire_delay = 40
accuracy = -2
secondary_projectile_type = null
secondary_fire_sound = null
can_switch_modes = 0
turret_sprite_set = "cannon"
turret_is_lethal = 1
fire_delay_wielded = 20
@@ -79,7 +95,12 @@
projectile_type = /obj/item/projectile/beam/xray
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2)
max_shots = 40
secondary_projectile_type = null
secondary_fire_sound = null
can_switch_modes = 0
turret_sprite_set = "xray"
turret_is_lethal = 1
/obj/item/weapon/gun/energy/rifle/pulse
name = "pulse rifle"
desc = "A weapon that uses advanced pulse-based beam generation technology to emit powerful laser blasts. Because of its complexity and cost, it is rarely seen in use except by specialists."
@@ -89,7 +110,12 @@
projectile_type = /obj/item/projectile/beam
sel_mode = 2
origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_MAGNET = 4)
secondary_projectile_type = /obj/item/projectile/beam/pulse
secondary_fire_sound = 'sound/weapons/pulse.ogg'
can_switch_modes = 0
turret_sprite_set = "pulse"
turret_is_lethal = 1
modifystate = null
firemodes = list(
@@ -106,6 +132,8 @@
burst_delay = 5
burst = 3
max_shots = 30
secondary_projectile_type = null
secondary_fire_sound = null
/obj/item/weapon/gun/energy/rifle/pulse/destroyer/attack_self(mob/living/user as mob)
user << "<span class='warning'>[src.name] has three settings, and they are all DESTROY.</span>"

View File

@@ -12,6 +12,8 @@
charge_cost = 300
max_shots = 10
projectile_type = /obj/item/projectile/ion
can_turret = 1
turret_sprite_set = "ion"
/obj/item/weapon/gun/energy/ionrifle/emp_act(severity)
..(max(severity, 2)) //so it doesn't EMP itself, I guess
@@ -28,6 +30,7 @@
self_recharge = 1
use_external_power = 1
recharge_time = 10
can_turret = 0
/obj/item/weapon/gun/energy/decloner
name = "biological demolecularisor"
@@ -77,6 +80,8 @@
self_recharge = 1
recharge_time = 5 //Time it takes for shots to recharge (in ticks)
charge_meter = 0
can_turret = 1
turret_sprite_set = "meteor"
/obj/item/weapon/gun/energy/meteorgun/pen
name = "meteor pen"
@@ -86,6 +91,7 @@
item_state = "pen"
w_class = 1
slot_flags = SLOT_BELT
can_turret = 0
/obj/item/weapon/gun/energy/mindflayer
@@ -94,6 +100,8 @@
icon_state = "xray"
projectile_type = /obj/item/projectile/beam/mindflayer
fire_sound = 'sound/weapons/Laser.ogg'
can_turret = 1
turret_sprite_set = "xray"
/obj/item/weapon/gun/energy/toxgun
name = "phoron pistol"
@@ -173,12 +181,16 @@
w_class = 3
max_shots = 4
fire_delay = 25
can_turret = 1
turret_is_lethal = 0
turret_sprite_set = "net"
/obj/item/weapon/gun/energy/net/mounted
max_shots = 1
self_recharge = 1
use_external_power = 1
recharge_time = 40
can_turret = 0
/* Vaurca Weapons */
@@ -283,6 +295,8 @@
burst = 1
burst_delay = 1
fire_delay = 0
can_turret = 1
turret_sprite_set = "laser"
firemodes = list(
list(mode_name="single shot", burst=1, burst_delay = 1, fire_delay = 0),
@@ -406,6 +420,8 @@
recharge_time = 1
charge_meter = 1
charge_cost = 50
can_turret = 1
turret_sprite_set = "thermaldrill"
firemodes = list(
list(mode_name="2 second burst", burst=10, burst_delay = 1, fire_delay = 20),

View File

@@ -6,11 +6,15 @@
fire_sound = 'sound/weapons/Taser.ogg'
max_shots = 5
projectile_type = /obj/item/projectile/energy/electrode
can_turret = 1
turret_sprite_set = "carbine"
turret_is_lethal = 0
/obj/item/weapon/gun/energy/taser/mounted
name = "mounted taser gun"
self_recharge = 1
use_external_power = 1
can_turret = 0
/obj/item/weapon/gun/energy/taser/mounted/cyborg
name = "taser gun"
@@ -44,6 +48,8 @@
max_shots = 5
self_recharge = 1
charge_meter = 0
can_turret = 1
turret_sprite_set = "crossbow"
/obj/item/weapon/gun/energy/crossbow/ninja
name = "energy dart thrower"

View File

@@ -11,6 +11,9 @@
slot_flags = SLOT_BELT|SLOT_BACK
projectile_type = /obj/item/projectile/temp
can_turret = 1
turret_sprite_set = "temperature"
cell_type = /obj/item/weapon/cell/crap //WAS High, but brought down to match energy use
/*

View File

@@ -1,25 +1,24 @@
//snowflake guns for xenoarch because you can't override the update_icon() proc inside the giant mess that is find creation
/obj/item/weapon/gun/energy/laser/xenoarch
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "egun3"
update_icon()
return
/obj/item/weapon/gun/energy/laser/practice/xenoarch
icon = 'icons/obj/xenoarchaeology.dmi'
update_icon()
return
/obj/item/weapon/gun/energy/laser/practice/xenoarch
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "egun1"
update_icon()
return
/obj/item/weapon/gun/energy/xray/xenoarch
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "egun5"
update_icon()
return
/obj/item/weapon/gun/energy/captain/xenoarch
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "egun4"
update_icon()
return