mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 02:16:05 +00:00
fixes and turrets
This commit is contained in:
@@ -101,8 +101,9 @@
|
||||
if(!perp.wear_id)
|
||||
threatcount += 2
|
||||
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/wizrobe))
|
||||
threatcount += 2
|
||||
if(ishuman(perp))
|
||||
if(istype(perp.wear_suit, /obj/item/clothing/suit/wizrobe))
|
||||
threatcount += 2
|
||||
|
||||
if(perp.dna && perp.dna.mutantrace && perp.dna.mutantrace != "none")
|
||||
threatcount += 2
|
||||
|
||||
@@ -60,154 +60,187 @@
|
||||
|
||||
machine_flags = EMAGGABLE
|
||||
|
||||
New()
|
||||
..()
|
||||
icon_state = "[lasercolor]grey_target_prism"
|
||||
// Sets up a spark system
|
||||
spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
sleep(10)
|
||||
if(!installation)// if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
|
||||
projectile = /obj/item/projectile/energy/electrode//holder for the projectile, here it is being set
|
||||
eprojectile = /obj/item/projectile/beam//holder for the projectile when emagged, if it is different
|
||||
reqpower = 200
|
||||
iconholder = 1
|
||||
else
|
||||
var/obj/item/weapon/gun/energy/E=new installation
|
||||
// All energy-based weapons are applicable
|
||||
switch(E.type)
|
||||
if(/obj/item/weapon/gun/energy/laser/bluetag)
|
||||
projectile = /obj/item/projectile/beam/lastertag/blue
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni//This bolt will stun ERRYONE with a vest
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "b"
|
||||
req_access = list(access_maint_tunnels)
|
||||
check_records = 0
|
||||
criminals = 0
|
||||
auth_weapons = 1
|
||||
stun_all = 0
|
||||
check_anomalies = 0
|
||||
shot_delay = 30
|
||||
/obj/machinery/porta_turret/New()
|
||||
..()
|
||||
icon_state = "[lasercolor]grey_target_prism"
|
||||
// Sets up a spark system
|
||||
spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
spawn(10)
|
||||
update_gun()
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser/redtag)
|
||||
projectile = /obj/item/projectile/beam/lastertag/red
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "r"
|
||||
req_access = list(access_maint_tunnels)
|
||||
check_records = 0
|
||||
criminals = 0
|
||||
auth_weapons = 1
|
||||
stun_all = 0
|
||||
check_anomalies = 0
|
||||
shot_delay = 30
|
||||
/obj/machinery/porta_turret/proc/update_gun()
|
||||
if(!installation)// if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
|
||||
projectile = /obj/item/projectile/energy/electrode//holder for the projectile, here it is being set
|
||||
eprojectile = /obj/item/projectile/beam//holder for the projectile when emagged, if it is different
|
||||
reqpower = 200
|
||||
iconholder = 1
|
||||
else
|
||||
var/obj/item/weapon/gun/energy/E=new installation
|
||||
// All energy-based weapons are applicable
|
||||
switch(E.type)
|
||||
if(/obj/item/weapon/gun/energy/laser/bluetag)
|
||||
projectile = /obj/item/projectile/beam/lastertag/blue
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni//This bolt will stun ERRYONE with a vest
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "b"
|
||||
req_access = list(access_maint_tunnels)
|
||||
check_records = 0
|
||||
criminals = 0
|
||||
auth_weapons = 1
|
||||
stun_all = 0
|
||||
check_anomalies = 0
|
||||
shot_delay = 30
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser/practice)
|
||||
projectile = /obj/item/projectile/beam/practice
|
||||
eprojectile = /obj/item/projectile/beam
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
if(/obj/item/weapon/gun/energy/laser/redtag)
|
||||
projectile = /obj/item/projectile/beam/lastertag/red
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "r"
|
||||
req_access = list(access_maint_tunnels)
|
||||
check_records = 0
|
||||
criminals = 0
|
||||
auth_weapons = 1
|
||||
stun_all = 0
|
||||
check_anomalies = 0
|
||||
shot_delay = 30
|
||||
|
||||
if(/obj/item/weapon/gun/energy/pulse_rifle)
|
||||
projectile = /obj/item/projectile/beam/pulse
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/laser/practice)
|
||||
projectile = /obj/item/projectile/beam/practice
|
||||
eprojectile = /obj/item/projectile/beam
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
|
||||
if(/obj/item/weapon/gun/energy/staff)
|
||||
projectile = /obj/item/projectile/change
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/radgun.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/pulse_rifle)
|
||||
projectile = /obj/item/projectile/beam/pulse
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/ionrifle)
|
||||
projectile = /obj/item/projectile/ion
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/ion.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/staff)
|
||||
projectile = /obj/item/projectile/change
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/radgun.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/taser)
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/ionrifle)
|
||||
projectile = /obj/item/projectile/ion
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/ion.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/stunrevolver)
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Gunshot.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/taser)
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/lasercannon)
|
||||
projectile = /obj/item/projectile/beam/heavylaser
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/stunrevolver)
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
eprojectile = projectile
|
||||
iconholder = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Gunshot.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/decloner)
|
||||
projectile = /obj/item/projectile/energy/declone
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/lasercannon)
|
||||
projectile = /obj/item/projectile/beam/heavylaser
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/crossbow/largecrossbow)
|
||||
projectile = /obj/item/projectile/energy/bolt/large
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 125
|
||||
fire_sound = 'sound/weapons/ebow.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/decloner)
|
||||
projectile = /obj/item/projectile/energy/declone
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 600
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/crossbow)
|
||||
projectile = /obj/item/projectile/energy/bolt
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 50
|
||||
fire_sound = 'sound/weapons/ebow.ogg'
|
||||
efire_sound = fire_sound
|
||||
if(/obj/item/weapon/gun/energy/crossbow/largecrossbow)
|
||||
projectile = /obj/item/projectile/energy/bolt/large
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 125
|
||||
fire_sound = 'sound/weapons/ebow.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser)
|
||||
projectile = /obj/item/projectile/beam
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 500
|
||||
if(/obj/item/weapon/gun/energy/crossbow)
|
||||
projectile = /obj/item/projectile/energy/bolt
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 50
|
||||
fire_sound = 'sound/weapons/ebow.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
else // Energy gun shots
|
||||
projectile = /obj/item/projectile/energy/electrode// if it hasn't been emagged, it uses normal taser shots
|
||||
eprojectile = /obj/item/projectile/beam//If it has, going to kill mode
|
||||
iconholder = 1
|
||||
egun = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
if(!eprojectile || !projectile)
|
||||
if(/obj/item/weapon/gun/energy/laser)
|
||||
projectile = /obj/item/projectile/beam
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 500
|
||||
|
||||
if(/obj/item/weapon/gun/energy/ricochet)
|
||||
projectile = /obj/item/projectile/ricochet
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 500
|
||||
|
||||
if(/obj/item/weapon/gun/energy/bison)
|
||||
projectile = /obj/item/projectile/beam/bison
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 250
|
||||
fire_sound = 'sound/weapons/bison_fire.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/polarstar/spur)
|
||||
projectile = /obj/item/projectile/spur
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 700
|
||||
fire_sound = 'sound/weapons/spur_high.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
if(/obj/item/weapon/gun/energy/polarstar)
|
||||
projectile = /obj/item/projectile/spur/polarstar
|
||||
eprojectile = projectile
|
||||
iconholder = null
|
||||
reqpower = 400
|
||||
fire_sound = 'sound/weapons/spur_high.ogg'
|
||||
efire_sound = fire_sound
|
||||
|
||||
else // Energy gun shots
|
||||
projectile = /obj/item/projectile/energy/electrode// if it hasn't been emagged, it uses normal taser shots
|
||||
eprojectile = /obj/item/projectile/beam//If it has, going to kill mode
|
||||
iconholder = 1
|
||||
egun = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
if(!eprojectile || !projectile)
|
||||
projectile = /obj/item/projectile/energy/electrode// if it hasn't been emagged, it uses normal taser shots
|
||||
eprojectile = /obj/item/projectile/beam//If it has, going to kill mode
|
||||
iconholder = 1
|
||||
egun = 1
|
||||
reqpower = 200
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
Destroy()
|
||||
// deletes its own cover with it
|
||||
qdel(cover)
|
||||
..()
|
||||
/obj/machinery/porta_turret/Destroy()
|
||||
// deletes its own cover with it
|
||||
qdel(cover)
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/attack_ai(mob/user as mob)
|
||||
@@ -694,6 +727,7 @@ Status: []<BR>"},
|
||||
use_power((reqpower*2))
|
||||
// Shooting Code:
|
||||
A.starting = T
|
||||
A.shot_from = src
|
||||
A.current = T
|
||||
A.yo = U.y - T.y
|
||||
A.xo = U.x - T.x
|
||||
@@ -859,11 +893,7 @@ Status: []<BR>"},
|
||||
Turret.name = finish_name
|
||||
Turret.installation = src.installation
|
||||
Turret.gun_charge = src.gun_charge
|
||||
|
||||
// Turret.cover=new/obj/machinery/porta_turret_cover(src.loc)
|
||||
// Turret.cover.Parent_Turret=Turret
|
||||
// Turret.cover.name = finish_name
|
||||
Turret.New()
|
||||
Turret.update_gun()
|
||||
qdel(src)
|
||||
|
||||
else if(istype(W, /obj/item/weapon/crowbar))
|
||||
|
||||
@@ -801,6 +801,7 @@ var/global/floorIsLava = 0
|
||||
<A href='?src=\ref[src];secretsfun=bomberdestroy'>Make Bomberman Bombs actually destroy stuff</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=bombernohurt'>Make Bomberman Bombs harmless to players(default)</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=bombernodestroy'>Make Bomberman Bombs harmless to the environnement(default)</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=placeturret'>Create a turret</A><BR>
|
||||
<BR>
|
||||
<B>Final Solutions</B><BR>
|
||||
<I>(Warning, these will end the round!)</I><BR>
|
||||
|
||||
@@ -2884,6 +2884,24 @@
|
||||
if(choice == "No, let's have perfectly circular explosions")
|
||||
message_admins("[key_name_admin(usr)] has set explosions to completely pass through walls and obstacles.")
|
||||
explosion_newmethod = 0
|
||||
if("placeturret")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","TUR")
|
||||
var/list/possible_guns = list()
|
||||
for(var/path in typesof(/obj/item/weapon/gun/energy))
|
||||
possible_guns += path
|
||||
var/choice = input("What energy gun do you want inside the turret?") in possible_guns
|
||||
if(!choice)
|
||||
return
|
||||
var/obj/item/weapon/gun/energy/gun = new choice()
|
||||
var/obj/machinery/porta_turret/Turret = new(get_turf(usr))
|
||||
Turret.installation = choice
|
||||
Turret.gun_charge = gun.power_supply.charge
|
||||
Turret.update_gun()
|
||||
qdel(gun)
|
||||
var/emag = input("Emag the turret?") in list("Yes", "No")
|
||||
if(emag=="Yes")
|
||||
Turret.emag(usr)
|
||||
if(usr)
|
||||
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
||||
if(ok)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
return secured
|
||||
|
||||
/obj/item/device/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(timestopped || loc.timestopped) return
|
||||
if(timestopped || (loc && loc.timestopped)) return
|
||||
if (istype(AM, /obj/effect/beam)) return
|
||||
if (AM.move_speed < 12) sense()
|
||||
return
|
||||
|
||||
@@ -156,6 +156,9 @@
|
||||
|
||||
remove_from_mob(to_drop) //clean out any refs
|
||||
|
||||
if(!to_drop)
|
||||
return 0
|
||||
|
||||
to_drop.forceMove(Target) //calls the Entered procs
|
||||
|
||||
to_drop.dropped(src)
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
src.visible_message("<span class='warning'>[src] has thrown [item].</span>", \
|
||||
drugged_message = "<span class='warning'>[item] escapes from [src]'s grasp and flies away!</span>")
|
||||
|
||||
if((istype(src.loc, /turf/space)) || (src.areaMaster.has_gravity == 0))
|
||||
if((istype(src.loc, /turf/space)) || (src.areaMaster && (src.areaMaster.has_gravity == 0)))
|
||||
var/mob/space_obj=src
|
||||
// If we're being held, make the guy holding us move.
|
||||
if(istype(loc,/obj/item/weapon/holder))
|
||||
|
||||
@@ -727,6 +727,8 @@ var/list/beam_master = list()
|
||||
if(drawn) return
|
||||
drawn = 1
|
||||
var/atom/curr = lastloc
|
||||
if(!firer)
|
||||
firer = starting
|
||||
var/Angle=round(Get_Angle(firer,curr))
|
||||
var/icon/I=new('icons/obj/lightning.dmi',icon_state)
|
||||
var/icon/Istart=new('icons/obj/lightning.dmi',"[icon_state]start")
|
||||
|
||||
@@ -109,7 +109,9 @@
|
||||
|
||||
/obj/item/projectile/spur/OnFired()
|
||||
..()
|
||||
var/obj/item/weapon/gun/energy/polarstar/quote = shot_from
|
||||
var/obj/item/weapon/gun/energy/polarstar/spur/quote = shot_from
|
||||
if(!quote || !istype(quote))
|
||||
return
|
||||
switch(quote.firelevel)
|
||||
if(SPUR_FULL_POWER,SPUR_HIGH_POWER)
|
||||
icon_state = "spur_high"
|
||||
@@ -131,6 +133,8 @@
|
||||
/obj/item/projectile/spur/polarstar/OnFired()
|
||||
..()
|
||||
var/obj/item/weapon/gun/energy/polarstar/quote = shot_from
|
||||
if(!quote || !istype(quote))
|
||||
return
|
||||
switch(quote.firelevel)
|
||||
if(SPUR_FULL_POWER,SPUR_HIGH_POWER)
|
||||
icon_state = "spur_high"
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
M.LAssailant = firer
|
||||
else
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN/(no longer exists)</b> shot <b>UNKNOWN/(no longer exists)</b> with a <b>[type]</b>"
|
||||
msg_admin_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]. Wait what the fuck? (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)")
|
||||
msg_admin_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]. Wait what the fuck?")
|
||||
log_attack("<font color='red'>UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]</font>")
|
||||
|
||||
/obj/item/projectile/ricochet/Bump(atom/A as mob|obj|turf|area)
|
||||
|
||||
Reference in New Issue
Block a user