Changed circledistance a bit, talk about ambiguous proc-names...it has nothing to do with circles! It's now called approx_dist and uses some magic constants to avoid those god-awful sqrts and powers which were called for N^2 turfs during explosions. It should approximate the distance between two points fairly accurately using a (surprisingly accurate) linear approximation of pythagoras theorem. C:

Changed RoundExplosions to a temporary define named USE_CIRCULAR_EXPLOSIONS which is a lot more intuitive and less confusing. Removing this define will compile square explosions code instead of circular ones. (So the cost of having a choice between circular/square is seen at compile-time not at run-time)

Fixed aliums being able to pick up storage objects such as bags/boxes/pillboxes and such.

Fixed unbuckling yourself from beds (via clicking the bed). You can also unbuckle yourself via resisting because beds are hard to click on when you're lying on them and they're covered in a sheet.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3854 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
elly1989@rocketmail.com
2012-06-18 07:37:50 +00:00
parent c516585940
commit 3cbd05ddef
5 changed files with 43 additions and 27 deletions
+8 -4
View File
@@ -1,3 +1,5 @@
#define USE_CIRCULAR_EXPLOSIONS 1
//TODO: Flash range does nothing currently
proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1)
@@ -25,8 +27,11 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
var/list/expTurfs = list() // All turfs being affected by the explosion (not flash range)
#ifdef USE_CIRCULAR_EXPLOSIONS
expTurfs = circlerangeturfs(epicenter, max(devastation_range, heavy_impact_range, light_impact_range))
#else
expTurfs = range(epicenter, max(devastation_range, heavy_impact_range, light_impact_range))
#endif
// Hello future editors, please note that 1000 calls to spawn will not speed this up, but this exact amount has been tested
// Now, tonnes of calls to spawn will allow other stuff to happen, but I believe we may as well let explosions
@@ -37,7 +42,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
var/list/lTurfs = list()
for(var/turf/T in expTurfs) // This doesn't slow it down at all, even 100,100,100 bombs
var/dist = circledistance(epicenter, T)
var/dist = approx_dist(epicenter, T)
if(dist < devastation_range)
dTurfs.Add(T)
@@ -54,7 +59,6 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
T.ex_act(1)
for(var/atom/object in T.contents)
object.ex_act(1)
spawn()
for(var/turf/T in hTurfs)
T.ex_act(2)
@@ -69,9 +73,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
if(defer_powernet_rebuild != 2)
defer_powernet_rebuild = 0
return 1
#undef USE_CIRCULAR_EXPLOSIONS
proc/secondaryexplosion(turf/epicenter, range)
-4
View File
@@ -201,10 +201,6 @@
src.show_to(usr)
return
/obj/item/weapon/storage/attack_paw(mob/user as mob)
//playsound(src.loc, "rustle", 50, 1, -5) // what
return src.attack_hand(user)
/obj/item/weapon/storage/attack_hand(mob/user as mob)
playsound(src.loc, "rustle", 50, 1, -5)