mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Stun Changes
This commit is contained in:
@@ -92,6 +92,7 @@
|
||||
desc = "It's baseball hat in tasteful red colour."
|
||||
icon_state = "secsoft"
|
||||
_color = "sec"
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/soft/sec/corp
|
||||
name = "corporate security cap"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
|
||||
/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/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun)
|
||||
/obj/item/weapon/gun/energy/advtaser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun)
|
||||
siemens_coefficient = 0.6
|
||||
|
||||
//Commander
|
||||
|
||||
@@ -628,6 +628,16 @@
|
||||
if(C)
|
||||
C.images -= I
|
||||
|
||||
|
||||
//Debug item to identify all ore spread quickly
|
||||
/obj/item/device/mining_scanner/admin
|
||||
|
||||
/obj/item/device/mining_scanner/admin/attack_self(mob/user)
|
||||
for(var/turf/simulated/mineral/M in world)
|
||||
if(M.scan_state)
|
||||
M.icon_state = M.scan_state
|
||||
del(src)
|
||||
|
||||
/**********************Xeno Warning Sign**********************/
|
||||
/obj/structure/sign/xeno_warning_mining
|
||||
name = "DANGEROUS ALIEN LIFE"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
new /obj/item/clothing/under/rank/miner(src)
|
||||
new /obj/item/clothing/gloves/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
new /obj/item/device/mining_scanner(src)
|
||||
new /obj/item/weapon/storage/bag/ore(src)
|
||||
new /obj/item/device/flashlight/lantern(src)
|
||||
new /obj/item/weapon/shovel(src)
|
||||
|
||||
@@ -98,8 +98,8 @@
|
||||
create = 1
|
||||
|
||||
/datum/manufacture/taser
|
||||
name = "Taser"
|
||||
item = /obj/item/weapon/gun/energy/taser
|
||||
name = "Advanced Taser"
|
||||
item = /obj/item/weapon/gun/energy/advtaser
|
||||
cost1 = /obj/item/weapon/ore/iron
|
||||
cname1 = "Iron"
|
||||
amount1 = 15
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
/mob/living/carbon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0)
|
||||
return ..()
|
||||
|
||||
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/agony = 0, var/blocked = 0)
|
||||
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/agony = 0, var/blocked = 0, var/stamina = 0)
|
||||
if(blocked >= 2) return 0
|
||||
if(stun) apply_effect(stun, STUN, blocked)
|
||||
if(weaken) apply_effect(weaken, WEAKEN, blocked)
|
||||
@@ -86,4 +86,5 @@
|
||||
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
|
||||
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
|
||||
if(agony) apply_effect(agony, AGONY, blocked)
|
||||
if(stamina) apply_damage(stamina, STAMINA, null, blocked)
|
||||
return 1
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/obj/item/weapon/gun/energy/advtaser
|
||||
name = "advanced taser"
|
||||
desc = "A hybrid taser designed to fire both short-range high-power electrodes and long-range disabler beams."
|
||||
icon_state = "advtaser"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
icon_override = 'icons/mob/in-hand/guns.dmi'
|
||||
cell_type = "/obj/item/weapon/cell/crap"
|
||||
origin_tech = null
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
charge_cost = 1000
|
||||
modifystate = "advtaserstun"
|
||||
|
||||
var/mode = 0 //0 = stun, 1 = disable
|
||||
|
||||
|
||||
attack_self(mob/living/user as mob)
|
||||
switch(mode)
|
||||
if(0)
|
||||
mode = 1
|
||||
charge_cost = 500
|
||||
fire_sound = 'sound/weapons/taser2.ogg'
|
||||
user << "\red [src.name] is now set to Disable."
|
||||
projectile_type = "/obj/item/projectile/beam/disabler"
|
||||
modifystate = "advtaserdisable"
|
||||
if(1)
|
||||
mode = 0
|
||||
charge_cost = 1000
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
user << "\red [src.name] is now set to stun."
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
modifystate = "advtaserstun"
|
||||
update_icon()
|
||||
if(user.l_hand == src)
|
||||
user.update_inv_l_hand()
|
||||
else
|
||||
user.update_inv_r_hand()
|
||||
@@ -1,15 +1,15 @@
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
name = "energy gun"
|
||||
desc = "A basic energy-based gun with two settings: Stun and kill."
|
||||
desc = "A basic energy-based gun with two settings: Stun and disable."
|
||||
icon_state = "energystun100"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
fire_sound = 'sound/weapons/Taser2.ogg'
|
||||
charge_cost = 500
|
||||
projectile_type = "/obj/item/projectile/beam/disabler"
|
||||
origin_tech = "combat=3;magnets=2"
|
||||
modifystate = "energystun"
|
||||
|
||||
var/mode = 0 //0 = stun, 1 = kill
|
||||
var/mode = 0 //0 = disable, 1 = kill
|
||||
|
||||
|
||||
attack_self(mob/living/user as mob)
|
||||
@@ -23,10 +23,10 @@
|
||||
modifystate = "energykill"
|
||||
if(1)
|
||||
mode = 0
|
||||
charge_cost = 1000
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
user << "\red [src.name] is now set to stun."
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
charge_cost = 500
|
||||
fire_sound = 'sound/weapons/Taser2.ogg'
|
||||
user << "\red [src.name] is now set to disable."
|
||||
projectile_type = "/obj/item/projectile/beam/disabler"
|
||||
modifystate = "energystun"
|
||||
update_icon()
|
||||
if(user.l_hand == src)
|
||||
@@ -42,6 +42,9 @@
|
||||
desc = "An energy gun with an experimental miniaturized reactor."
|
||||
icon_state = "nucgun"
|
||||
origin_tech = "combat=3;materials=5;powerstorage=3"
|
||||
charge_cost = 1000
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
var/lightfail = 0
|
||||
var/charge_tick = 0
|
||||
|
||||
@@ -115,10 +118,12 @@
|
||||
update_mode()
|
||||
if (mode == 0)
|
||||
overlays += "nucgun-stun"
|
||||
charge_cost = 1000
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/electrode"
|
||||
else if (mode == 1)
|
||||
overlays += "nucgun-kill"
|
||||
|
||||
|
||||
emp_act(severity)
|
||||
..()
|
||||
reliability -= round(15/severity)
|
||||
|
||||
@@ -240,6 +240,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse."
|
||||
icon_state = "disabler"
|
||||
item_state = null
|
||||
projectile_type = "/obj/item/projectile/energy/disabler"
|
||||
projectile_type = "/obj/item/projectile/beam/disabler"
|
||||
cell_type = "/obj/item/weapon/cell"
|
||||
charge_cost = 500
|
||||
@@ -109,6 +109,7 @@
|
||||
name = "Energy Crossbow"
|
||||
desc = "A weapon favored by syndicate carp hunters."
|
||||
icon_state = "crossbowlarge"
|
||||
silenced = 0
|
||||
w_class = 3.0
|
||||
force = 10
|
||||
m_amt = 4000
|
||||
|
||||
@@ -50,20 +50,36 @@
|
||||
var/eyeblur = 0
|
||||
var/drowsy = 0
|
||||
var/agony = 0
|
||||
var/stamina = 0
|
||||
var/embed = 0 // whether or not the projectile can embed itself in the mob
|
||||
var/forcedodge = 0
|
||||
|
||||
var/range = 0
|
||||
var/proj_hit = 0
|
||||
|
||||
|
||||
proc/delete()
|
||||
// Garbage collect the projectiles
|
||||
loc = null
|
||||
|
||||
proc/Range()
|
||||
if(range)
|
||||
range--
|
||||
if(range <= 0)
|
||||
on_range()
|
||||
else
|
||||
return
|
||||
|
||||
proc/on_range() //if we want there to be effects when they reach the end of their range
|
||||
proj_hit = 1
|
||||
qdel(src)
|
||||
|
||||
proc/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(blocked >= 2) return 0//Full block
|
||||
if(!isliving(target)) return 0
|
||||
if(isanimal(target)) return 0
|
||||
var/mob/living/L = target
|
||||
L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked) // add in AGONY!
|
||||
L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked, stamina) // add in AGONY!
|
||||
return 1
|
||||
|
||||
proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not.
|
||||
@@ -83,7 +99,7 @@
|
||||
loc = A.loc
|
||||
return 0 //cannot shoot yourself
|
||||
|
||||
if(bumped)
|
||||
if(bumped)
|
||||
return 1
|
||||
bumped = 1
|
||||
if(firer && istype(A, /mob))
|
||||
@@ -170,7 +186,7 @@
|
||||
if(kill_count < 1)
|
||||
del(src)
|
||||
return
|
||||
kill_count--
|
||||
kill_count--
|
||||
if((!( current ) || loc == current))
|
||||
current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z)
|
||||
if((x == 1 || x == world.maxx || y == 1 || y == world.maxy))
|
||||
@@ -242,8 +258,4 @@
|
||||
else
|
||||
M = locate() in get_step(src,target)
|
||||
if(istype(M))
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/proc/Range()
|
||||
return
|
||||
|
||||
return 1
|
||||
@@ -44,6 +44,14 @@
|
||||
irradiate = 30
|
||||
forcedodge = 1
|
||||
|
||||
/obj/item/projectile/beam/disabler
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
damage = 36
|
||||
damage_type = STAMINA
|
||||
hitsound = 'sound/weapons/tap.ogg'
|
||||
eyeblur = 0
|
||||
|
||||
/obj/item/projectile/beam/pulse
|
||||
name = "pulse"
|
||||
icon_state = "u_laser"
|
||||
|
||||
@@ -10,8 +10,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet
|
||||
damage = 5
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stamina = 33
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet/rubber //beanbag shotgun shells
|
||||
embed = 0
|
||||
@@ -19,8 +18,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet2
|
||||
damage = 15
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stamina = 75 //the detective can't shoot in bursts and will get yelled at if he sinks 50 rounds into perps to stun 'em
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet2/rubber //detective's c38 bullets
|
||||
embed = 0
|
||||
@@ -42,8 +40,7 @@
|
||||
|
||||
/obj/item/projectile/bullet/midbullet
|
||||
damage = 20
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stamina = 50
|
||||
|
||||
/obj/item/projectile/bullet/midbullet2
|
||||
damage = 25
|
||||
@@ -58,8 +55,7 @@
|
||||
/obj/item/projectile/bullet/stunshot
|
||||
name = "stunshot"
|
||||
damage = 5
|
||||
stun = 5
|
||||
weaken = 5
|
||||
stamina = 95
|
||||
stutter = 5
|
||||
embed = 0
|
||||
sharp = 0
|
||||
|
||||
@@ -14,14 +14,25 @@
|
||||
weaken = 5
|
||||
stutter = 5
|
||||
hitsound = 'sound/weapons/tase.ogg'
|
||||
range = 7
|
||||
//Damage will be handled on the MOB side, to prevent window shattering.
|
||||
|
||||
on_hit(var/atom/target, var/blocked = 0)
|
||||
/obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(!proj_hit)
|
||||
if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - burst into sparks!
|
||||
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
..()
|
||||
proj_hit = 1
|
||||
..()
|
||||
|
||||
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
|
||||
if(!proj_hit)
|
||||
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
proj_hit = 1
|
||||
..()
|
||||
|
||||
/obj/item/projectile/energy/electrode/revolver
|
||||
name = "electrode"
|
||||
@@ -49,16 +60,18 @@
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
weaken = 5
|
||||
range = 7
|
||||
|
||||
|
||||
/obj/item/projectile/energy/bolt
|
||||
name = "bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 10
|
||||
damage = 15
|
||||
damage_type = TOX
|
||||
nodamage = 0
|
||||
weaken = 5
|
||||
stutter = 5
|
||||
range = 10
|
||||
|
||||
/obj/item/projectile/energy/bolt/large
|
||||
name = "largebolt"
|
||||
@@ -69,16 +82,4 @@
|
||||
icon_state = "energy"
|
||||
damage = 20
|
||||
damage_type = TOX
|
||||
irradiate = 20
|
||||
|
||||
/obj/item/projectile/energy/disabler
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
damage = 34
|
||||
damage_type = STAMINA
|
||||
var/range = 8
|
||||
|
||||
/obj/item/projectile/energy/disabler/Range()
|
||||
range--
|
||||
if(range <= 0)
|
||||
del(src)
|
||||
irradiate = 20
|
||||
@@ -30,6 +30,7 @@
|
||||
icon_state= "bolter"
|
||||
damage = 60
|
||||
flag = "bullet"
|
||||
range = 7
|
||||
|
||||
/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
|
||||
explosion(target, -1, 0, 2, 1, 0)
|
||||
@@ -170,7 +171,7 @@
|
||||
damage = 15
|
||||
damage_type = BRUTE
|
||||
flag = "bomb"
|
||||
var/range = 2
|
||||
range = 3
|
||||
|
||||
obj/item/projectile/kinetic/New()
|
||||
var/turf/proj_turf = get_turf(src)
|
||||
|
||||
Reference in New Issue
Block a user