From c07a76b564bc712f43b2c75336ba5ed7ab1cbba0 Mon Sep 17 00:00:00 2001 From: DeityLink Date: Wed, 28 Oct 2015 00:45:09 +0100 Subject: [PATCH] bee nade --- .../items/weapons/grenades/spawnergrenade.dm | 28 ++++++++++++- code/modules/mob/living/simple_animal/bees.dm | 10 +++-- code/modules/projectiles/projectile.dm | 39 ++++++++++++------ .../modules/projectiles/projectile/bullets.dm | 12 ++++-- .../projectiles/projectile/ricochet.dm | 25 ----------- icons/obj/grenade.dmi | Bin 4190 -> 4513 bytes 6 files changed, 70 insertions(+), 44 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 4fa16ae78e4..b9f4aa0e73e 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -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() diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm index 10f15f065b9..20bb4723bd3 100644 --- a/code/modules/mob/living/simple_animal/bees.dm +++ b/code/modules/mob/living/simple_animal/bees.dm @@ -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. diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 695a9247405..83b86a7dbd5 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -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("[key_name(firer)] shot himself with a [type].") + M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot himself with a [type]" + firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot himself with a [type]" + 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.")] (JMP)") + if(!iscarbon(firer)) + M.LAssailant = null + else + M.LAssailant = firer + else + log_attack("[key_name(firer)] shot [key_name(M)] with a [type]") + M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" + firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" + msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (JMP)") + if(!iscarbon(firer)) + M.LAssailant = null + else + M.LAssailant = firer + else + M.attack_log += "\[[time_stamp()]\] UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]" + msg_admin_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]. Wait what the fuck?") + log_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]") + /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 << "You've been shot in the [parse_zone(def_zone)] by the [src.name]!" else visible_message("[A.name] is hit by the [src.name] in the [parse_zone(def_zone)]!")//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("[key_name(firer)] shot [key_name(M)] with a [type]") - M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" - firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" - msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (JMP)") //BS12 EDIT ALG if(!iscarbon(firer)) M.LAssailant = null else M.LAssailant = firer - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN/(no longer exists) shot [key_name(M)] with a [type]" - msg_admin_attack("UNKNOWN/(no longer exists) shot [key_name(M)] with a [type] (JMP)") //BS12 EDIT ALG - log_attack("UNKNOWN/(no longer exists) shot [key_name(M)] with a [type]") 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()]\] [key_name(firer)] shot [key_name(BM)] with a [type]" - firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(BM)] with a [type]" - log_attack("[key_name(firer)] shot [key_name(BM)] with a [type]") - 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 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 721416e2db2..a49c58c9100 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -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("\the [M.name] is hit by \the [src.name] in the [parse_zone(def_zone)]!") + M.bullet_act(src, def_zone) + admin_warn(M) + BEE.loc = M.loc + BEE.target = M + else + BEE.newTarget() bullet_die() diff --git a/code/modules/projectiles/projectile/ricochet.dm b/code/modules/projectiles/projectile/ricochet.dm index d3716201b45..d26b1507678 100644 --- a/code/modules/projectiles/projectile/ricochet.dm +++ b/code/modules/projectiles/projectile/ricochet.dm @@ -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("[key_name(firer)] shot himself with a [type].") - M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot himself with a [type]" - firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot himself with a [type]" - 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.")] (JMP)") - if(!iscarbon(firer)) - M.LAssailant = null - else - M.LAssailant = firer - else - log_attack("[key_name(firer)] shot [key_name(M)] with a [type]") - M.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" - firer.attack_log += "\[[time_stamp()]\] [key_name(firer)] shot [key_name(M)] with a [type]" - msg_admin_attack("[key_name(firer)] shot [key_name(M)] with a [type] (JMP)") - if(!iscarbon(firer)) - M.LAssailant = null - else - M.LAssailant = firer - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]" - msg_admin_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]. Wait what the fuck?") - log_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]") - /obj/item/projectile/ricochet/Bump(atom/A as mob|obj|turf|area) if(bumped) return 0 bumped = 1 diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index 81bc2d349c6d465aa6f72a2fa43597ab8a077fc4..2626a81c92256b38f27a07014d97214a7d1e9b9d 100644 GIT binary patch delta 4255 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