From 2bc3ec67f1110e3676d24ecfaafa4a7481651474 Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Wed, 12 Sep 2012 11:17:49 +0000 Subject: [PATCH] -Improved the singularity. It was using 3 for(in range) loops when it could be easily be brought down to a single loop. -Changed grabbing's constructor to allow parameters for the grabber and the grabbee. (I made a simple little tweak and look at all the files I had to change :( ) -Easter Egg: Clowns have a chance of reducing or increasing the singularities energy. Upper and lower limit is 300 and -300. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4681 316c924e-a436-60f5-8080-3fe189b3f50e --- .../living/carbon/alien/humanoid/humanoid.dm | 4 +- .../mob/living/carbon/alien/larva/larva.dm | 4 +- .../living/carbon/human/human_attackalien.dm | 4 +- .../living/carbon/human/human_attackhand.dm | 4 +- .../mob/living/carbon/metroid/metroid.dm | 8 +-- .../mob/living/carbon/monkey/monkey.dm | 8 +-- .../modules/mob/living/silicon/robot/robot.dm | 4 +- code/modules/mob/living/simple_animal/life.dm | 9 +-- code/modules/mob/mob_grab.dm | 6 +- code/modules/power/singularity/singularity.dm | 58 ++++++++++--------- 10 files changed, 49 insertions(+), 60 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 5d9045aab3..fa8aa5cc35 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -407,9 +407,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, M, src) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 968f773760..de9b1ab4c8 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -371,9 +371,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 9a7c185e0d..5c35fe9bb7 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -12,9 +12,7 @@ if(M == src) return if (w_uniform) w_uniform.add_fingerprint(M) - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, M, src) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index c32c1df5ca..8bc4926de7 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -85,9 +85,7 @@ if("grab") if(M == src) return 0 if(w_uniform) w_uniform.add_fingerprint(M) - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, M, src) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 2f50adbd72..bf3a6f58c6 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -503,9 +503,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) @@ -605,9 +603,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 372c0f0e73..2fc9530b67 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -223,9 +223,7 @@ if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) @@ -294,9 +292,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 78d62b6767..5775d3eeb3 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -579,9 +579,7 @@ if ("grab") if (M == src) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) diff --git a/code/modules/mob/living/simple_animal/life.dm b/code/modules/mob/living/simple_animal/life.dm index 7937145c5f..ccb00315d9 100644 --- a/code/modules/mob/living/simple_animal/life.dm +++ b/code/modules/mob/living/simple_animal/life.dm @@ -253,9 +253,8 @@ return if (nopush) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) + M.put_in_active_hand(G) grabbed_by += G @@ -293,9 +292,7 @@ return if (nopush) return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) - G.assailant = M - G.affecting = src + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M, M, src ) M.put_in_active_hand(G) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index c3d8df4a56..15d7ccc2eb 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -242,8 +242,12 @@ return -/obj/item/weapon/grab/New() +/obj/item/weapon/grab/New(var/location, mob/user as mob, mob/affected as mob) ..() + src.loc = location + src.assailant = user + src.affecting = affected + // HUD hud1 = new /obj/screen/grab( src ) hud1.icon_state = "reinforce" hud1.name = "Reinforce Grab" diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 1dc464c304..a44808a082 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -36,10 +36,7 @@ var/global/list/uneatable = list( /obj/machinery/singularity/New(loc, var/starting_energy = 50, var/temp = 0) //CARN: admin-alert for chuckle-fuckery. last_warning = world.time - var/count = 0 - for(var/obj/machinery/containment_field/CF in world) - count = 1 - break + var/count = locate(/obj/machinery/containment_field) in orange(30, src) if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1) investigate_log("was created. [count?"":"No containment fields were active"]","singulo") @@ -215,21 +212,25 @@ var/global/list/uneatable = list( set background = 1 if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 1 - for(var/atom/movable/X in orange(consume_range,src)) - consume(X) - for(var/turf/X in orange(consume_range,src)) - consume(X) - for(var/atom/movable/X in orange(grav_pull,src)) - if(is_type_in_list(X, uneatable)) continue - if(((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))|| (src.current_size >= 9)) - step_towards(X,src) - else if(istype(X,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - step_towards(H,src) + // Let's just make this one loop. + for(var/atom/X in orange(grav_pull,src)) + var/dist = get_dist(X, src) + // Movable atoms only + if(dist > consume_range && istype(X, /atom/movable)) + if(is_type_in_list(X, uneatable)) continue + if(((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))|| (src.current_size >= 9)) + step_towards(X,src) + else if(istype(X,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = X + if(istype(H.shoes,/obj/item/clothing/shoes/magboots)) + var/obj/item/clothing/shoes/magboots/M = H.shoes + if(M.magpulse) + continue + step_towards(H,src) + // Turf and movable atoms + else if(dist <= consume_range && (isturf(X) || istype(X, /atom/movable))) + consume(X) + if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 0 return @@ -242,9 +243,15 @@ var/global/list/uneatable = list( if (istype(A,/mob/living))//Mobs get gibbed gain = 20 if(istype(A,/mob/living/carbon/human)) - if(A:mind) - if((A:mind:assigned_role == "Station Engineer") || (A:mind:assigned_role == "Chief Engineer") ) + var/mob/living/carbon/human/H = A + if(H.mind) + + if((H.mind.assigned_role == "Station Engineer") || (H.mind.assigned_role == "Chief Engineer") ) gain = 100 + + if(H.mind.assigned_role == "Clown") + gain = rand(-300, 300) // HONK + spawn() A:gib() sleep(1) @@ -269,7 +276,7 @@ var/global/list/uneatable = list( O.y = 2 O.z = 2 else - A:ex_act(1.0) + A.ex_act(1.0) if(A) del(A) gain = 2 else if(isturf(A)) @@ -532,10 +539,9 @@ var/global/list/uneatable = list( set background = 1 if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 1 - for(var/atom/movable/X in orange(consume_range,src)) - consume(X) - for(var/turf/X in orange(consume_range,src)) - consume(X) + for(var/atom/X in orange(consume_range,src)) + if(isturf(X) || istype(X, /atom/movable)) + consume(X) if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 0 return