part 4
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
var/forced_value = 0
|
||||
var/duration = 300
|
||||
|
||||
/obj/item/grenade/antigravity/prime()
|
||||
/obj/item/grenade/antigravity/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
T.AddElement(/datum/element/forced_gravity, forced_value)
|
||||
addtimer(CALLBACK(T, /datum/.proc/_RemoveElement, list(forced_value)), duration)
|
||||
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
message_admins(message)
|
||||
user.log_message("primed [src] ([reagent_string])",LOG_GAME)
|
||||
|
||||
/obj/item/grenade/chem_grenade/prime()
|
||||
/obj/item/grenade/chem_grenade/prime(mob/living/lanced_by)
|
||||
if(stage != READY)
|
||||
return FALSE
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades.
|
||||
threatscale = 1.1 // 10% more effective.
|
||||
|
||||
/obj/item/grenade/chem_grenade/large/prime()
|
||||
/obj/item/grenade/chem_grenade/large/prime(mob/living/lanced_by)
|
||||
if(stage != READY)
|
||||
return FALSE
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/grenade/chem_grenade/adv_release/prime()
|
||||
/obj/item/grenade/chem_grenade/adv_release/prime(mob/living/lanced_by)
|
||||
if(stage != READY)
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/max_spawned = 8
|
||||
var/segment_chance = 35
|
||||
|
||||
/obj/item/grenade/clusterbuster/prime()
|
||||
/obj/item/grenade/clusterbuster/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
var/numspawned = rand(min_spawned,max_spawned)
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
new payload_spawner(drop_location(), payload, numspawned)//Launches payload
|
||||
playsound(src, prime_sound, 75, 1, -3)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
//////////////////////
|
||||
//Clusterbang segment
|
||||
@@ -60,10 +60,10 @@
|
||||
step_away(src,loc)
|
||||
addtimer(CALLBACK(src, .proc/prime), rand(15,60))
|
||||
|
||||
/obj/item/grenade/clusterbuster/segment/prime()
|
||||
/obj/item/grenade/clusterbuster/segment/prime(mob/living/lanced_by)
|
||||
new payload_spawner(drop_location(), payload, rand(min_spawned,max_spawned))
|
||||
playsound(src, prime_sound, 75, 1, -3)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
//////////////////////////////////
|
||||
//The payload spawner effect
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
icon_state = "emp"
|
||||
item_state = "emp"
|
||||
|
||||
/obj/item/grenade/empgrenade/prime()
|
||||
/obj/item/grenade/empgrenade/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
empulse(src, 4, 10)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
|
||||
var/flashbang_range = 7 //how many tiles away the mob will be stunned.
|
||||
|
||||
/obj/item/grenade/flashbang/prime()
|
||||
/obj/item/grenade/flashbang/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
var/flashbang_turf = get_turf(src)
|
||||
@@ -16,7 +16,7 @@
|
||||
playsound(flashbang_turf, 'sound/weapons/flashbang.ogg', 100, TRUE, 8, 0.9)
|
||||
new /obj/effect/dummy/lighting_obj (flashbang_turf, LIGHT_COLOR_WHITE, (flashbang_range + 2), 4, 2)
|
||||
flashbang_mobs(flashbang_turf, flashbang_range)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/flashbang/proc/flashbang_mobs(turf/source, range)
|
||||
var/list/banged = get_hearers_in_view(range, source)
|
||||
@@ -45,142 +45,40 @@
|
||||
M.DefaultCombatKnockdown(max(200/max(1,distance), 60))
|
||||
|
||||
/obj/item/grenade/stingbang
|
||||
|
||||
|
||||
|
||||
name = "stingbang"
|
||||
|
||||
|
||||
|
||||
icon_state = "timeg"
|
||||
|
||||
|
||||
|
||||
item_state = "flashbang"
|
||||
|
||||
|
||||
|
||||
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
|
||||
|
||||
|
||||
|
||||
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
|
||||
|
||||
|
||||
|
||||
var/flashbang_range = 1 //how many tiles away the mob will be stunned.
|
||||
|
||||
|
||||
|
||||
shrapnel_type = /obj/item/projectile/bullet/pellet/stingball
|
||||
|
||||
|
||||
|
||||
shrapnel_radius = 5
|
||||
|
||||
|
||||
|
||||
custom_premium_price = 700 // mostly gotten through cargo, but throw in one for the sec vendor ;)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/grenade/stingbang/mega
|
||||
|
||||
|
||||
|
||||
name = "mega stingbang"
|
||||
|
||||
|
||||
|
||||
shrapnel_type = /obj/item/projectile/bullet/pellet/stingball/mega
|
||||
|
||||
|
||||
|
||||
shrapnel_radius = 12
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/grenade/stingbang/prime()
|
||||
|
||||
|
||||
|
||||
/obj/item/grenade/stingbang/prime(mob/living/lanced_by)
|
||||
if(iscarbon(loc))
|
||||
|
||||
|
||||
|
||||
var/mob/living/carbon/C = loc
|
||||
|
||||
|
||||
|
||||
var/obj/item/bodypart/B = C.get_holding_bodypart_of_item(src)
|
||||
|
||||
|
||||
|
||||
if(B)
|
||||
|
||||
|
||||
|
||||
C.visible_message("<b><span class='danger'>[src] goes off in [C]'s hand, blowing [C.p_their()] [B.name] to bloody shreds!</span></b>", "<span class='userdanger'>[src] goes off in your hand, blowing your [B.name] to bloody shreds!</span>")
|
||||
|
||||
|
||||
|
||||
B.dismember()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
|
||||
update_mob()
|
||||
|
||||
|
||||
|
||||
var/flashbang_turf = get_turf(src)
|
||||
|
||||
|
||||
|
||||
if(!flashbang_turf)
|
||||
|
||||
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
do_sparks(rand(5, 9), FALSE, src)
|
||||
|
||||
|
||||
|
||||
playsound(flashbang_turf, 'sound/weapons/flashbang.ogg', 50, TRUE, 8, 0.9)
|
||||
|
||||
|
||||
|
||||
new /obj/effect/dummy/lighting_obj (flashbang_turf, LIGHT_COLOR_WHITE, (flashbang_range + 2), 2, 1)
|
||||
|
||||
|
||||
|
||||
for(var/mob/living/M in get_hearers_in_view(flashbang_range, flashbang_turf))
|
||||
|
||||
|
||||
|
||||
pop(get_turf(M), M)
|
||||
|
||||
|
||||
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/stingbang/proc/pop(turf/T , mob/living/M)
|
||||
if(M.stat == DEAD) //They're dead!
|
||||
@@ -194,7 +92,7 @@
|
||||
M.Knockdown(max(100/max(1,distance), 60))
|
||||
|
||||
//Bang
|
||||
if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this.
|
||||
if(!distance || loc == M || loc == M.loc)
|
||||
M.Paralyze(20)
|
||||
M.Knockdown(200)
|
||||
M.soundbang_act(1, 200, 10, 15)
|
||||
@@ -222,10 +120,10 @@
|
||||
rots++
|
||||
user.changeNext_move(CLICK_CD_RAPID)
|
||||
|
||||
/obj/item/grenade/primer/prime()
|
||||
/obj/item/grenade/primer/prime(mob/living/lanced_by)
|
||||
shrapnel_radius = round(rots / rots_per_mag)
|
||||
. = ..()
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/primer/stingbang
|
||||
name = "rotsting"
|
||||
|
||||
@@ -50,11 +50,11 @@
|
||||
cut_overlay("improvised_grenade_filled")
|
||||
preprime(user, null, FALSE)
|
||||
|
||||
/obj/item/grenade/iedcasing/prime() //Blowing that can up
|
||||
/obj/item/grenade/iedcasing/prime(mob/living/lanced_by) //Blowing that can up
|
||||
. = ..()
|
||||
update_mob()
|
||||
explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball.
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/iedcasing/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
|
||||
|
||||
/obj/item/grenade/proc/prime()
|
||||
/obj/item/grenade/proc/prime(mob/living/lanced_by)
|
||||
var/turf/T = get_turf(src)
|
||||
log_game("Grenade detonation at [AREACOORD(T)], location [loc]")
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
shrapnel_initialized = TRUE
|
||||
AddComponent(/datum/component/pellet_cloud, projectile_type=shrapnel_type, magnitude=shrapnel_radius)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_GRENADE_PRIME)
|
||||
SEND_SIGNAL(src, COMSIG_GRENADE_PRIME, lanced_by)
|
||||
if(ex_dev || ex_heavy || ex_light || ex_flame)
|
||||
explosion(loc, ex_dev, ex_heavy, ex_light, flame_range = ex_flame)
|
||||
|
||||
@@ -165,13 +165,3 @@
|
||||
|
||||
/obj/item/proc/grenade_prime_react(obj/item/grenade/nade)
|
||||
return
|
||||
|
||||
/// Don't call qdel() directly on the grenade after it booms, call this instead so it can still resolve its pellet_cloud component if it has shrapnel, then the component will qdel it
|
||||
|
||||
|
||||
|
||||
/obj/item/grenade/proc/resolve()
|
||||
if(shrapnel_type)
|
||||
moveToNullspace()
|
||||
else
|
||||
qdel(src)
|
||||
@@ -158,7 +158,7 @@
|
||||
shout_syndicate_crap(user)
|
||||
explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes
|
||||
user.gib(1, 1)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/plastic/update_icon_state()
|
||||
if(nadeassembly)
|
||||
@@ -207,7 +207,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/grenade/plastic/c4/prime()
|
||||
/obj/item/grenade/c4/prime(mob/living/lanced_by)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
. = ..()
|
||||
@@ -222,7 +222,7 @@
|
||||
location = get_turf(src)
|
||||
if(location)
|
||||
explosion(location,0,0,3)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/plastic/c4/attack(mob/M, mob/user, def_zone)
|
||||
return
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
qdel(smoke)
|
||||
return ..()
|
||||
|
||||
/obj/item/grenade/smokebomb/prime()
|
||||
/obj/item/grenade/smokebomb/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
@@ -29,4 +29,4 @@
|
||||
var/damage = round(30/(get_dist(B,src)+1))
|
||||
B.take_damage(damage, BURN, "melee", 0)
|
||||
sleep(80)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/spawner_type = null // must be an object path
|
||||
var/deliveryamt = 1 // amount of type to deliver
|
||||
|
||||
/obj/item/grenade/spawnergrenade/prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
|
||||
/obj/item/grenade/spawnergrenade/prime(mob/living/lanced_by) // Prime now just handles the two loops that query for people in lockers and people who can see it.
|
||||
. = ..()
|
||||
update_mob()
|
||||
if(spawner_type && deliveryamt)
|
||||
@@ -20,7 +20,7 @@
|
||||
// Spawn some hostile syndicate critters and spread them out
|
||||
spawn_and_random_walk(spawner_type, T, deliveryamt, walk_chance=50, admin_spawn=((flags_1 & ADMIN_SPAWNED_1) ? TRUE : FALSE))
|
||||
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/spawnergrenade/manhacks
|
||||
name = "viscerator delivery grenade"
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
ex_flame = 2
|
||||
|
||||
|
||||
/obj/item/grenade/syndieminibomb/prime()
|
||||
/obj/item/grenade/syndieminibomb/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/syndieminibomb/concussion
|
||||
name = "HE Grenade"
|
||||
@@ -39,10 +39,10 @@
|
||||
shrapnel_type = /obj/item/projectile/bullet/shrapnel/mega
|
||||
shrapnel_radius = 12
|
||||
|
||||
/obj/item/grenade/frag/prime()
|
||||
/obj/item/grenade/frag/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/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."
|
||||
@@ -54,7 +54,7 @@
|
||||
var/rad_damage = 350
|
||||
var/stamina_damage = 30
|
||||
|
||||
/obj/item/grenade/gluon/prime()
|
||||
/obj/item/grenade/gluon/prime(mob/living/lanced_by)
|
||||
. = ..()
|
||||
update_mob()
|
||||
playsound(loc, 'sound/effects/empulse.ogg', 50, 1)
|
||||
@@ -66,4 +66,4 @@
|
||||
for(var/mob/living/carbon/L in T)
|
||||
L.adjustStaminaLoss(stamina_damage)
|
||||
L.adjust_bodytemperature(-230)
|
||||
resolve()
|
||||
qdel(src)
|
||||
|
||||
Reference in New Issue
Block a user