Revert "12/21 modernizations from TG live"
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
desc = "A custom made grenade."
|
||||
icon_state = "chemg"
|
||||
item_state = "flashbang"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
force = 2
|
||||
var/stage = EMPTY
|
||||
var/list/beakers = list()
|
||||
@@ -21,7 +21,7 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/New()
|
||||
create_reagents(1000)
|
||||
stage_change() // If no argument is set, it will change the stage to the current stage, useful for stock grenades that start READY.
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
|
||||
display_timer = (stage == READY && !nadeassembly) //show/hide the timer based on assembly state
|
||||
@@ -54,7 +54,7 @@
|
||||
if(beakers.len)
|
||||
stage_change(READY)
|
||||
user << "<span class='notice'>You lock the [initial(name)] assembly.</span>"
|
||||
playsound(loc, I.usesound, 25, -3)
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 25, -3)
|
||||
else
|
||||
user << "<span class='warning'>You need to add at least one beaker before locking the [initial(name)] assembly!</span>"
|
||||
else if(stage == READY && !nadeassembly)
|
||||
|
||||
@@ -126,10 +126,3 @@
|
||||
/obj/item/weapon/grenade/clusterbuster/clf3
|
||||
name = "WELCOME TO HELL"
|
||||
payload = /obj/item/weapon/grenade/chem_grenade/clf3
|
||||
|
||||
|
||||
//random clusterbuster spawner
|
||||
/obj/item/weapon/grenade/clusterbuster/random/New()
|
||||
var/real_type = pick(subtypesof(/obj/item/weapon/grenade/clusterbuster))
|
||||
new real_type(loc)
|
||||
qdel(src)
|
||||
|
||||
@@ -12,16 +12,18 @@
|
||||
for(var/mob/living/M in get_hearers_in_view(7, flashbang_turf))
|
||||
bang(get_turf(M), M)
|
||||
|
||||
for(var/obj/structure/blob/B in get_hear(8,flashbang_turf)) //Blob damage here
|
||||
var/distance = get_dist(B, get_turf(src))
|
||||
var/damage = round(100/(distance*distance)+1)
|
||||
B.take_damage(damage, BURN, "energy")
|
||||
for(var/obj/effect/blob/B in get_hear(8,flashbang_turf)) //Blob damage here
|
||||
var/damage = round(40/(get_dist(B,get_turf(src))+1))
|
||||
B.take_damage(damage, BURN)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/proc/bang(turf/T , mob/living/M)
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
playsound(loc, 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
var/distance = max(0,get_dist(get_turf(src),T))
|
||||
|
||||
//Checking for protection
|
||||
var/ear_safety = M.check_ear_prot()
|
||||
var/distance = max(1,get_dist(src,T))
|
||||
|
||||
//Flash
|
||||
if(M.weakeyes)
|
||||
@@ -30,14 +32,25 @@
|
||||
M.Weaken(15) //hella stunned
|
||||
M.Stun(15)
|
||||
M.adjust_eye_damage(8)
|
||||
else if(M.flash_act(affect_silicon = 1))
|
||||
M.Stun(max(10/max(1,distance), 3))
|
||||
M.Weaken(max(10/max(1,distance), 3))
|
||||
|
||||
if(M.flash_eyes(affect_silicon = 1))
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
|
||||
//Bang
|
||||
if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this.
|
||||
if((loc == M) || loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
M.soundbang_act(1, 10, 10, 15)
|
||||
|
||||
else
|
||||
M.soundbang_act(1, max(10/max(1,distance), 3), rand(0, 5))
|
||||
if(!ear_safety)
|
||||
M << sound('sound/weapons/flash_ring.ogg',0,1,0,100)
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15))
|
||||
if (M.ear_damage >= 15)
|
||||
M << "<span class='warning'>Your ears start to ring badly!</span>"
|
||||
if(prob(M.ear_damage - 10 + 5))
|
||||
M << "<span class='warning'>You can't hear anything!</span>"
|
||||
M.disabilities |= DEAF
|
||||
else
|
||||
if (M.ear_damage >= 5)
|
||||
M << "<span class='warning'>Your ears start to ring!</span>"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/obj/item/weapon/grenade/iedcasing
|
||||
name = "improvised firebomb"
|
||||
desc = "A weak, improvised incendiary device."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "improvised_grenade"
|
||||
item_state = "flashbang"
|
||||
@@ -34,12 +34,9 @@
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/soda_cans/can = locate() in contents
|
||||
if(can)
|
||||
var/muh_layer = can.layer
|
||||
var/muh_plane = can.plane
|
||||
can.layer = FLOAT_LAYER
|
||||
can.plane = FLOAT_PLANE
|
||||
underlays += can
|
||||
can.layer = muh_layer
|
||||
can.plane = muh_plane
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user) //
|
||||
@@ -53,8 +50,8 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)].")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
|
||||
message_admins("[key_name_admin(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/weapon/grenade
|
||||
name = "grenade"
|
||||
desc = "It has an adjustable timer."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
w_class = 2
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "grenade"
|
||||
item_state = "flashbang"
|
||||
@@ -9,18 +9,15 @@
|
||||
throw_range = 7
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
resistance_flags = FLAMMABLE
|
||||
obj_integrity = 40
|
||||
max_integrity = 40
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 5
|
||||
var/active = 0
|
||||
var/det_time = 50
|
||||
var/display_timer = 1
|
||||
|
||||
/obj/item/weapon/grenade/deconstruct(disassembled = TRUE)
|
||||
if(!disassembled)
|
||||
prime()
|
||||
if(!qdeleted(src))
|
||||
qdel(src)
|
||||
/obj/item/weapon/grenade/burn()
|
||||
prime()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/grenade/proc/clown_check(mob/living/carbon/human/user)
|
||||
if(user.disabilities & CLUMSY && prob(50))
|
||||
@@ -55,10 +52,8 @@
|
||||
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(bombturf)]"
|
||||
bombers += message
|
||||
message_admins(message)
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
|
||||
message_admins("[key_name_admin(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[usr]'>FLW</A>) has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.throw_mode_on()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
update_icon()
|
||||
return
|
||||
if(nadeassembly && istype(I, /obj/item/weapon/wirecutters))
|
||||
playsound(src, I.usesound, 20, 1)
|
||||
playsound(src, 'sound/items/Wirecutter.ogg', 20, 1)
|
||||
nadeassembly.loc = get_turf(src)
|
||||
nadeassembly.master = null
|
||||
nadeassembly = null
|
||||
@@ -60,7 +60,7 @@
|
||||
nadeassembly.attack_self(user)
|
||||
return
|
||||
var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
|
||||
if(user.get_active_held_item() == src)
|
||||
if(user.get_active_hand() == src)
|
||||
newtime = Clamp(newtime, 10, 60000)
|
||||
det_time = newtime
|
||||
user << "Timer set for [det_time] seconds."
|
||||
@@ -78,8 +78,8 @@
|
||||
src.target = AM
|
||||
loc = null
|
||||
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1)
|
||||
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse")
|
||||
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>) with [det_time] second fuse",0,1)
|
||||
log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse")
|
||||
|
||||
target.add_overlay(image_overlay, 1)
|
||||
if(!nadeassembly)
|
||||
@@ -87,9 +87,9 @@
|
||||
addtimer(src, "prime", det_time*10)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/suicide_act(mob/user)
|
||||
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) suicided with [src] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
|
||||
message_admins("[key_name(user)] suicided with [src] at ([user.x],[user.y],[user.z])")
|
||||
user.visible_message("<span class='suicide'>[user] activates the [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!</span>")
|
||||
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) suicided with [src.name] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
|
||||
message_admins("[key_name(user)] suicided with [src.name] at ([user.x],[user.y],[user.z])")
|
||||
user.visible_message("<span class='suicide'>[user] activates the [src.name] and holds it above \his head! It looks like \he's going out with a bang!</span>")
|
||||
var/message_say = "FOR NO RAISIN!"
|
||||
if(user.mind)
|
||||
if(user.mind.special_role)
|
||||
@@ -105,9 +105,10 @@
|
||||
else if(user.mind.gang_datum)
|
||||
message_say = "[uppertext(user.mind.gang_datum.name)] RULES!"
|
||||
user.say(message_say)
|
||||
explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes
|
||||
user.gib(1, 1)
|
||||
qdel(src)
|
||||
target = user
|
||||
sleep(10)
|
||||
prime()
|
||||
user.gib(no_brain = 1)
|
||||
|
||||
/obj/item/weapon/grenade/plastic/update_icon()
|
||||
if(nadeassembly)
|
||||
@@ -121,7 +122,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4
|
||||
name = "C4"
|
||||
desc = "Used to put holes in specific areas without too much extra hole. A saboteur's favorite."
|
||||
desc = "Used to put holes in specific areas without too much extra hole. A saboteurs favourite."
|
||||
|
||||
/obj/item/weapon/grenade/plastic/c4/prime()
|
||||
var/turf/location
|
||||
@@ -146,7 +147,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/plastic/x4
|
||||
name = "X4"
|
||||
desc = "A shaped high-explosive breaching charge. Designed to ensure user safety and wall nonsafety."
|
||||
desc = "A specialized shaped high explosive breaching charge. Designed to be safer for the user, and less so, for the wall."
|
||||
var/aim_dir = NORTH
|
||||
icon_state = "plasticx40"
|
||||
item_state = "plasticx4"
|
||||
@@ -161,9 +162,9 @@
|
||||
else
|
||||
location = get_turf(src)
|
||||
if(location)
|
||||
if(istype(loc, /obj/item/weapon/twohanded/spear) || !target)
|
||||
if(istype(loc, /obj/item/weapon/twohanded/spear))
|
||||
explosion(location, 0, 2, 3)
|
||||
else if(target && target.density)
|
||||
else if(target.density)
|
||||
var/turf/T = get_step(location, aim_dir)
|
||||
explosion(get_step(T, aim_dir),0,0,3)
|
||||
explosion(T,0,2,0)
|
||||
|
||||
@@ -20,12 +20,13 @@
|
||||
/obj/item/weapon/grenade/smokebomb/prime()
|
||||
update_mob()
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
smoke.set_up(4, src)
|
||||
smoke.set_up(4, usr.loc)
|
||||
smoke.start()
|
||||
|
||||
|
||||
for(var/obj/structure/blob/B in view(8,src))
|
||||
for(var/obj/effect/blob/B in view(8,src))
|
||||
var/damage = round(30/(get_dist(B,src)+1))
|
||||
B.take_damage(damage, BURN, "melee", 0)
|
||||
B.health -= damage
|
||||
B.update_icon()
|
||||
sleep(80)
|
||||
qdel(src)
|
||||
|
||||
@@ -15,17 +15,23 @@
|
||||
var/turf/T = get_turf(src)
|
||||
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
|
||||
for(var/mob/living/carbon/C in viewers(T, null))
|
||||
C.flash_act()
|
||||
C.flash_eyes()
|
||||
|
||||
// Spawn some hostile syndicate critters and spread them out
|
||||
spawn_and_random_walk(spawner_type, T, deliveryamt, walk_chance=50, admin_spawn=admin_spawned)
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
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
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
name = "viscerator delivery grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/viscerator
|
||||
deliveryamt = 10
|
||||
deliveryamt = 5
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/spesscarp
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
item_state = "flashbang"
|
||||
origin_tech = "materials=3;magnets=4;syndicate=3"
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/prime()
|
||||
update_mob()
|
||||
explosion(src.loc,1,2,4,flame_range = 2)
|
||||
@@ -29,25 +28,25 @@
|
||||
icon_state = "frag"
|
||||
|
||||
/obj/item/weapon/grenade/gluon
|
||||
desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also likely wet any nearby floors."
|
||||
name = "gluon frag grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "bluefrag"
|
||||
item_state = "flashbang"
|
||||
var/freeze_range = 4
|
||||
var/rad_damage = 35
|
||||
var/stamina_damage = 30
|
||||
desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also likely wet any nearby floors."
|
||||
name = "gluon frag grenade"
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "bluefrag"
|
||||
item_state = "flashbang"
|
||||
var/freeze_range = 4
|
||||
var/rad_damage = 35
|
||||
var/stamina_damage = 30
|
||||
|
||||
/obj/item/weapon/grenade/gluon/prime()
|
||||
update_mob()
|
||||
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1)
|
||||
radiation_pulse(loc,freeze_range,freeze_range+1,rad_damage)
|
||||
for(var/turf/T in view(freeze_range,loc))
|
||||
if(isfloorturf(T))
|
||||
var/turf/open/floor/F = T
|
||||
F.wet = TURF_WET_PERMAFROST
|
||||
addtimer(F, "MakeDry", rand(3000, 3100), TIMER_NORMAL, TURF_WET_PERMAFROST)
|
||||
for(var/mob/living/carbon/L in T)
|
||||
L.adjustStaminaLoss(stamina_damage)
|
||||
L.bodytemperature -= 230
|
||||
qdel(src)
|
||||
update_mob()
|
||||
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1)
|
||||
radiation_pulse(loc,freeze_range,freeze_range+1,rad_damage)
|
||||
for(var/turf/T in view(freeze_range,loc))
|
||||
if(istype(T,/turf/open/floor))
|
||||
var/turf/open/floor/F = T
|
||||
F.wet = TURF_WET_PERMAFROST
|
||||
addtimer(F, "MakeDry", rand(3000, 3100), 0, TURF_WET_PERMAFROST)
|
||||
for(var/mob/living/carbon/L in T)
|
||||
L.adjustStaminaLoss(stamina_damage)
|
||||
L.bodytemperature -= 230
|
||||
qdel(src)
|
||||
|
||||
Reference in New Issue
Block a user