mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
bee nade
This commit is contained in:
@@ -21,8 +21,10 @@
|
||||
if(M:eyecheck() <= 0)
|
||||
flick("e_flash", M.flash) // flash dose faggots
|
||||
|
||||
var/list/spawned_atoms = list()
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
spawned_atoms += x
|
||||
x.loc = T
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
@@ -30,13 +32,15 @@
|
||||
if(L && istype(L))
|
||||
handle_faction(x,L)
|
||||
// Spawn some hostile critters
|
||||
|
||||
postPrime(spawned_atoms)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/proc/handle_faction(var/mob/living/spawned, var/mob/living/L)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/proc/postPrime(var/list/spawned_atoms)
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/manhacks
|
||||
name = "manhack delivery grenade"
|
||||
@@ -70,3 +74,25 @@
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp
|
||||
deliveryamt = 5
|
||||
origin_tech = "materials=3;magnets=4;syndicate=4"
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/beenade
|
||||
name = "bee-nade"
|
||||
icon_state = "beenade"
|
||||
spawner_type = /mob/living/simple_animal/bee
|
||||
deliveryamt = 15
|
||||
origin_tech = "materials=3;magnets=4;biotech=4"
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/beenade/postPrime(var/list/spawned_atoms)
|
||||
if(!spawned_atoms || !spawned_atoms.len)
|
||||
return
|
||||
for(var/A in spawned_atoms)
|
||||
var/mob/living/simple_animal/bee/BEE = A
|
||||
if(!istype(BEE))
|
||||
continue
|
||||
BEE.strength = 1
|
||||
BEE.toxic = 5
|
||||
BEE.mut = 2
|
||||
BEE.feral = 25
|
||||
BEE.icon_state = "bees1-feral"
|
||||
BEE.newTarget()
|
||||
|
||||
@@ -96,6 +96,12 @@
|
||||
if(goodmove)
|
||||
Move(dest)
|
||||
|
||||
/mob/living/simple_animal/bee/proc/newTarget()
|
||||
var/list/neabyMobs = list()
|
||||
for(var/mob/living/G in view(src,7))
|
||||
neabyMobs += G
|
||||
target = pick(neabyMobs)
|
||||
|
||||
/mob/living/simple_animal/bee/Life()
|
||||
if(timestopped) return 0 //under effects of time magick
|
||||
|
||||
@@ -213,9 +219,7 @@
|
||||
wander = 0
|
||||
|
||||
else // My target's gone! But I might still be pissed! You there. You look like a good stinging target!
|
||||
for(var/mob/living/carbon/G in view(src,7))
|
||||
target = G
|
||||
break
|
||||
newTarget()
|
||||
|
||||
if(target_turf)
|
||||
var/tdir=get_dir(src,target_turf) // This was called thrice. Optimize.
|
||||
|
||||
@@ -133,6 +133,31 @@ var/list/impact_master = list()
|
||||
permutated.len = 0
|
||||
..("permutated")
|
||||
|
||||
/obj/item/projectile/proc/admin_warn(mob/living/M)
|
||||
if(istype(firer, /mob))
|
||||
if(firer == M)
|
||||
log_attack("<font color='red'>[key_name(firer)] shot himself with a [type].</font>")
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot himself with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot himself with a <b>[type]</b>"
|
||||
msg_admin_attack("[key_name(firer)] shot himself with a [type], [pick("top kek!","for shame.","he definitely meant to do that","probably not the last time either.")] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = firer
|
||||
else
|
||||
log_attack("<font color='red'>[key_name(firer)] shot [key_name(M)] with a [type]</font>")
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
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?")
|
||||
log_attack("<font color='red'>UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]</font>")
|
||||
|
||||
/obj/item/projectile/Bump(atom/A as mob|obj|turf|area)
|
||||
if (!A) //This was runtiming if by chance A was null.
|
||||
return 0
|
||||
@@ -182,19 +207,12 @@ var/list/impact_master = list()
|
||||
M << "<span class='warning'>You've been shot in the [parse_zone(def_zone)] by the [src.name]!</span>"
|
||||
else
|
||||
visible_message("<span class='warning'>[A.name] is hit by the [src.name] in the [parse_zone(def_zone)]!</span>")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
|
||||
admin_warn(M)
|
||||
if(istype(firer, /mob))
|
||||
log_attack("<font color='red'>[key_name(firer)] shot [key_name(M)] with a [type]</font>")
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = firer
|
||||
else
|
||||
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN/(no longer exists)</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
msg_admin_attack("UNKNOWN/(no longer exists) shot [key_name(M)] with a [type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
|
||||
log_attack("<font color='red'>UNKNOWN/(no longer exists) shot [key_name(M)] with a [type]</font>")
|
||||
|
||||
if(!A)
|
||||
return 1
|
||||
@@ -205,10 +223,7 @@ var/list/impact_master = list()
|
||||
if(JC.occupant)
|
||||
var/mob/BM = JC.occupant
|
||||
if(istype(firer, /mob))
|
||||
BM.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(BM)]</b> with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(BM)]</b> with a <b>[type]</b>"
|
||||
log_attack("<font color='red'>[key_name(firer)] shot [key_name(BM)] with a [type]</font>")
|
||||
msg_admin_attack("[key_name(firer)] shot [key_name(BM)] with a [type]") //BS12 EDIT ALG
|
||||
admin_warn(BM)
|
||||
if(!iscarbon(firer))
|
||||
BM.LAssailant = null
|
||||
else
|
||||
|
||||
@@ -305,7 +305,13 @@
|
||||
BEE.feral = 25
|
||||
BEE.icon_state = "bees1-feral"
|
||||
|
||||
if(ismob(A))
|
||||
BEE.loc = A.loc
|
||||
BEE.target = A
|
||||
if(istype(A,/mob/living))
|
||||
var/mob/living/M = A
|
||||
visible_message("<span class='warning'>\the [M.name] is hit by \the [src.name] in the [parse_zone(def_zone)]!</span>")
|
||||
M.bullet_act(src, def_zone)
|
||||
admin_warn(M)
|
||||
BEE.loc = M.loc
|
||||
BEE.target = M
|
||||
else
|
||||
BEE.newTarget()
|
||||
bullet_die()
|
||||
|
||||
@@ -224,31 +224,6 @@
|
||||
returnToPool(src)
|
||||
OnDeath()
|
||||
|
||||
/obj/item/projectile/ricochet/proc/admin_warn(mob/living/M)
|
||||
if(istype(firer, /mob))
|
||||
if(firer == M)
|
||||
log_attack("<font color='red'>[key_name(firer)] shot himself with a [type].</font>")
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot himself with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot himself with a <b>[type]</b>"
|
||||
msg_admin_attack("[key_name(firer)] shot himself with a [type], [pick("top kek!","for shame.","he definitely meant to do that","probably not the last time either.")] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = firer
|
||||
else
|
||||
log_attack("<font color='red'>[key_name(firer)] shot [key_name(M)] with a [type]</font>")
|
||||
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
firer.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
|
||||
msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
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?")
|
||||
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)
|
||||
if(bumped) return 0
|
||||
bumped = 1
|
||||
|
||||
Reference in New Issue
Block a user