]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'martin-t/damagetext' into 'master'
authorMario <zacjardine@y7mail.com>
Sat, 22 Oct 2016 01:13:49 +0000 (01:13 +0000)
committerMario <zacjardine@y7mail.com>
Sat, 22 Oct 2016 01:13:49 +0000 (01:13 +0000)
fix damage text rounding errors when accumulating damage

This fixes MG reporting wrong damage when accumulated after passing through a wall (or similar situations where damage is not a whole number) while keeping rounding behavior for weapons like mortar.

I used MinceR's idea of multiplying the damage by 100 and sending the decimal part inside the short instead of using float to keep bandwidth the same.

Now that i think about it, this could cause trouble if the damage dealt is higher than 655 (because 656*100 won't fit in short). However health and armor max is 200 so it shouldn't happen unless we start sending damage text for vehicles as well.

See merge request !365

182 files changed:
.gitlab-ci.yml
_hud_common.cfg
bal-wep-mario.cfg
bal-wep-nexuiz25.cfg
bal-wep-overkill.cfg
bal-wep-samual.cfg
bal-wep-xdf.cfg
bal-wep-xonotic.cfg
bal-wep-xpm.cfg
balance-overkill.cfg
defaultXonotic.cfg
gamemodes.cfg
gfx/menu/luma/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/luminos/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/wickedx/icon_mod_jeff.tga [new file with mode: 0644]
gfx/menu/xaw/icon_mod_jeff.tga [new file with mode: 0644]
minigames.cfg
minigames/bulldozer/storage_level1.txt
minigames/bulldozer/storage_level10.txt
minigames/bulldozer/storage_level11.txt
minigames/bulldozer/storage_level12.txt
minigames/bulldozer/storage_level13.txt
minigames/bulldozer/storage_level14.txt
minigames/bulldozer/storage_level15.txt
minigames/bulldozer/storage_level2.txt
minigames/bulldozer/storage_level3.txt
minigames/bulldozer/storage_level4.txt
minigames/bulldozer/storage_level5.txt
minigames/bulldozer/storage_level6.txt
minigames/bulldozer/storage_level7.txt
minigames/bulldozer/storage_level8.txt
minigames/bulldozer/storage_level9.txt
mutators.cfg
notifications.cfg
physics.cfg
physicsCPMA.cfg
physicsFruit.cfg
physicsHavoc.cfg
physicsLeeStricklin-ModdedFruit.cfg
physicsLeeStricklin.cfg
physicsLeeStricklinOld.cfg
physicsLzd.cfg
physicsNexuiz10.cfg
physicsNexuiz11.cfg
physicsNexuiz151.cfg
physicsNexuiz151b.cfg
physicsNexuiz16rc1.cfg
physicsNexuiz20.cfg
physicsNexuiz25.cfg
physicsNexuiz26.cfg
physicsNoQWBunny-nexbased.cfg
physicsQ.cfg
physicsQ2.cfg
physicsQ2a.cfg
physicsQ3.cfg
physicsQBF.cfg
physicsQBFplus.cfg
physicsSamual.cfg
physicsWarsow.cfg
physicsWarsowClassicBunny.cfg
physicsWarsowDev.cfg
physicsX.cfg
physicsX010.cfg
physicsX07.cfg
physicsXDF.cfg
physicsXDFLight.cfg
qcsrc/client/autocvars.qh
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/hud/panel/centerprint.qc
qcsrc/client/hud/panel/scoreboard.qc
qcsrc/client/mutators/events.qh
qcsrc/client/player_skeleton.qc
qcsrc/client/view.qc
qcsrc/client/wall.qc
qcsrc/common/constants.qh
qcsrc/common/ent_cs.qc
qcsrc/common/gamemodes/gamemode/nexball/nexball.qc
qcsrc/common/gamemodes/gamemode/onslaught/cl_generator.qc
qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc
qcsrc/common/gamemodes/gamemode/onslaught/sv_controlpoint.qc
qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qc
qcsrc/common/gamemodes/gamemode/onslaught/sv_onslaught.qh
qcsrc/common/mapinfo.qc
qcsrc/common/minigames/minigame/bd.qc
qcsrc/common/minigames/minigame/pp.qc
qcsrc/common/minigames/minigame/snake.qc
qcsrc/common/minigames/minigame/ttt.qc
qcsrc/common/monsters/_mod.inc
qcsrc/common/monsters/monster.qh
qcsrc/common/monsters/monster/mage.qc
qcsrc/common/monsters/monster/shambler.qc
qcsrc/common/monsters/monster/spider.qc
qcsrc/common/monsters/monster/wyvern.qc
qcsrc/common/monsters/monster/zombie.qc
qcsrc/common/monsters/spawner.qc [new file with mode: 0644]
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/monsters/sv_monsters.qh
qcsrc/common/monsters/sv_spawn.qc
qcsrc/common/monsters/sv_spawn.qh
qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
qcsrc/common/mutators/mutator/instagib/sv_instagib.qc
qcsrc/common/mutators/mutator/melee_only/sv_melee_only.qc
qcsrc/common/mutators/mutator/nades/nades.qc
qcsrc/common/mutators/mutator/nix/sv_nix.qc
qcsrc/common/mutators/mutator/overkill/sv_overkill.qc
qcsrc/common/mutators/mutator/spawn_near_teammate/sv_spawn_near_teammate.qc
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qc
qcsrc/common/mutators/mutator/waypoints/waypointsprites.qh
qcsrc/common/notifications/all.inc
qcsrc/common/notifications/all.qh
qcsrc/common/physics/movetypes/movetypes.qh
qcsrc/common/physics/player.qc
qcsrc/common/physics/player.qh
qcsrc/common/stats.qh
qcsrc/common/t_items.qc
qcsrc/common/t_items.qh
qcsrc/common/triggers/func/breakable.qc
qcsrc/common/triggers/teleporters.qc
qcsrc/common/triggers/trigger/delay.qc
qcsrc/common/triggers/trigger/jumppads.qc
qcsrc/common/triggers/trigger/viewloc.qc
qcsrc/common/triggers/triggers.qc
qcsrc/common/turrets/cl_turrets.qc
qcsrc/common/turrets/sv_turrets.qh
qcsrc/common/vehicles/sv_vehicles.qc
qcsrc/common/vehicles/vehicle/bumblebee.qc
qcsrc/common/vehicles/vehicle/racer.qc
qcsrc/common/vehicles/vehicle/raptor.qc
qcsrc/common/vehicles/vehicle/spiderbot.qc
qcsrc/common/weapons/all.qc
qcsrc/common/weapons/weapon/arc.qc
qcsrc/common/weapons/weapon/devastator.qc
qcsrc/common/weapons/weapon/fireball.qc
qcsrc/common/weapons/weapon/hagar.qc
qcsrc/common/weapons/weapon/hook.qc
qcsrc/common/weapons/weapon/seeker.qc
qcsrc/common/weapons/weapon/tuba.qc
qcsrc/ecs/systems/cl_physics.qc
qcsrc/ecs/systems/physics.qc
qcsrc/lib/csqcmodel/cl_model.qc
qcsrc/lib/random.qc
qcsrc/lib/random.qh
qcsrc/lib/spawnfunc.qh
qcsrc/menu/item/dialog.qc
qcsrc/menu/item/dialog.qh
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/dialog_settings_game_messages.qc
qcsrc/menu/xonotic/dialog_settings_misc.qc
qcsrc/server/autocvars.qh
qcsrc/server/bot/default/bot.qc
qcsrc/server/bot/default/havocbot/roles.qc
qcsrc/server/bot/default/navigation.qc
qcsrc/server/bot/default/scripting.qc
qcsrc/server/bot/default/scripting.qh
qcsrc/server/cheats.qc
qcsrc/server/client.qc
qcsrc/server/command/common.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_models.qc
qcsrc/server/g_world.qc
qcsrc/server/mapvoting.qc
qcsrc/server/mutators/events.qh
qcsrc/server/mutators/mutator/gamemode_assault.qc
qcsrc/server/mutators/mutator/gamemode_assault.qh
qcsrc/server/mutators/mutator/gamemode_ca.qc
qcsrc/server/mutators/mutator/gamemode_ctf.qc
qcsrc/server/mutators/mutator/gamemode_cts.qc
qcsrc/server/mutators/mutator/gamemode_domination.qc
qcsrc/server/mutators/mutator/gamemode_freezetag.qc
qcsrc/server/mutators/mutator/gamemode_invasion.qc
qcsrc/server/mutators/mutator/gamemode_keyhunt.qc
qcsrc/server/mutators/mutator/gamemode_keyhunt.qh
qcsrc/server/mutators/mutator/gamemode_race.qc
qcsrc/server/mutators/mutator/gamemode_tdm.qc
qcsrc/server/pathlib/main.qc
qcsrc/server/pathlib/pathlib.qh
qcsrc/server/player.qc
qcsrc/server/spawnpoints.qc
qcsrc/server/teamplay.qc
qcsrc/server/weapons/tracing.qc
qcsrc/server/weapons/weaponsystem.qc

index afd12e592f5e3a5de8dbc67cce4461b2d8efe74b..3c251dccc6bab8b822b9bf94bd5fb2e2c1d54d9e 100644 (file)
@@ -30,7 +30,7 @@ test_sv_game:
     - wget -O data/maps/g-23.waypoints.cache https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/g-23.waypoints.cache
     - wget -O data/maps/g-23.waypoints.hardwired https://gitlab.com/xonotic/xonotic-maps.pk3dir/raw/master/maps/g-23.waypoints.hardwired
     - make
-    - EXPECT=b46b7dcf27e864c2842b7436e32e24fe
+    - EXPECT=0a9ea83e32e148da989cbbadc7421ea0
     - HASH=$(${ENGINE} -noconfig -nohome +exec serverbench.cfg
       | tee /dev/stderr
       | grep '^:'
index 725bfe4e38b840dec5a7c4dc27c04f7028e503ce..c7befdd232dd79479a9c2a7b54c81120e9708150 100644 (file)
@@ -92,7 +92,7 @@ seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_new_weight 0.1 "
 seta hud_panel_engineinfo_framecounter_exponentialmovingaverage_instantupdate_change_threshold 0.5 "threshold for fps change when to update instantly, to make big fps changes update faster"
 
 seta hud_panel_physics_acceleration_movingaverage 1 "use an averaging method for calculating acceleration instead of the real value"
-seta hud_panel_phisics_update_interval 0.0666 "how often (in seconds) numeric values get updated on screen"
+seta hud_panel_physics_update_interval 0.0666 "how often (in seconds) numeric values get updated on screen"
 seta hud_panel_physics_speed_unit "1" "speed unit (1 = qu/s, 2 = m/s, 3 = km/h, 4 = mph, 5 = knots)"
 
 seta hud_panel_itemstime_progressbar_maxtime "30" "when left time is at least this amount, the status bar is full"
@@ -107,6 +107,13 @@ seta hud_panel_infomessages_group0 1 "show group 0 messages (showing keys for no
 seta hud_panel_infomessages_group_time 6 "number of seconds a message of a group lasts before it gets changed"
 seta hud_panel_infomessages_group_fadetime 0.4 "group message fade in/out time"
 
+seta hud_panel_scoreboard_namesize 15 "size limit of player names and relative column (multiplied by fontsize)"
+seta hud_panel_scoreboard_maxheight 0.5 "max height of the scoreboard; a few players that wouldn't fit into the scoreboard are listed in the last row"
+seta hud_panel_scoreboard_others_showscore 1 "show scores of players listed in the last row when the scoreboard reaches the max height"
+seta hud_panel_scoreboard_spectators_showping 1 "show ping of spectators"
+seta hud_panel_scoreboard_spectators_aligned 0 "align spectators in columns"
+seta hud_panel_scoreboard_minwidth 0.4 "minimum width of the scoreboard"
+
 // hud panel aliases
 alias quickmenu "cl_cmd hud quickmenu ${* ?}"
 
index f0fbb6291ccac30ea531630069396d56542c2c30..d3b106640d4514fe19e94e87fb687a0e09baf3c7 100644 (file)
@@ -92,7 +92,7 @@ set g_balance_machinegun_sustained_refire 0.1
 set g_balance_machinegun_sustained_spread 0.03
 set g_balance_machinegun_switchdelay_drop 0.2
 set g_balance_machinegun_switchdelay_raise 0.2
-set g_balance_machinegun_weaponreplace "arc"
+set g_balance_machinegun_weaponreplace ""
 set g_balance_machinegun_weaponstart 0
 set g_balance_machinegun_weaponstartoverride -1
 set g_balance_machinegun_weaponthrowable 1
@@ -260,9 +260,9 @@ set g_balance_crylink_secondary_ammo 2
 set g_balance_crylink_secondary_animtime 0.2
 set g_balance_crylink_secondary_bouncedamagefactor 0.5
 set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_damage 35
+set g_balance_crylink_secondary_damage 10
 set g_balance_crylink_secondary_edgedamage 5
-set g_balance_crylink_secondary_force -300
+set g_balance_crylink_secondary_force -250
 set g_balance_crylink_secondary_joindelay 0
 set g_balance_crylink_secondary_joinexplode 0
 set g_balance_crylink_secondary_joinexplode_damage 0
@@ -277,7 +277,7 @@ set g_balance_crylink_secondary_other_fadetime 5
 set g_balance_crylink_secondary_other_lifetime 5
 set g_balance_crylink_secondary_radius 100
 set g_balance_crylink_secondary_refire 0.7
-set g_balance_crylink_secondary_shots 1
+set g_balance_crylink_secondary_shots 5
 set g_balance_crylink_secondary_speed 3000
 set g_balance_crylink_secondary_spread 0.01
 set g_balance_crylink_secondary_spreadtype 1
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -397,10 +397,11 @@ set g_balance_devastator_reload_ammo 0
 set g_balance_devastator_reload_time 2
 set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
-set g_balance_devastator_remote_force 450
+set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
-set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_force 450
+set g_balance_devastator_remote_jump_radius 100
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
index d4b47594d7061462769246cb79af1a180c4b84d1..41c9081b92d80a0df3b7252dbf1a65fa7c385e83 100644 (file)
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 105
 set g_balance_devastator_remote_edgedamage 40
 set g_balance_devastator_remote_force 600
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index d7463338aa0f2746550ab2c40468fa8838e89e7a..82609a76ca5ed4158e0c210b839025792de15e96 100644 (file)
@@ -84,7 +84,7 @@ set g_balance_machinegun_reload_time 1.5
 set g_balance_machinegun_solidpenetration 13.1
 set g_balance_machinegun_spread_add 0.012
 set g_balance_machinegun_spread_max 0.05
-set g_balance_machinegun_spread_min 0.02
+set g_balance_machinegun_spread_min 0
 set g_balance_machinegun_sustained_ammo 1
 set g_balance_machinegun_sustained_damage 25
 set g_balance_machinegun_sustained_force 5
@@ -302,7 +302,7 @@ set g_balance_vortex_charge_shot_multiplier 0
 set g_balance_vortex_charge_start 0.5
 set g_balance_vortex_charge_velocity_rate 0
 set g_balance_vortex_primary_ammo 10
-set g_balance_vortex_primary_animtime 0.95
+set g_balance_vortex_primary_animtime 0.65
 set g_balance_vortex_primary_damage 100
 set g_balance_vortex_primary_damagefalloff_forcehalflife 0
 set g_balance_vortex_primary_damagefalloff_halflife 0
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
@@ -777,15 +778,15 @@ set g_balance_arc_weaponthrowable 1
 // }}}
 // {{{ #21: Heavy Machine Gun
 set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
 set g_balance_hmg_refire 0.05
 set g_balance_hmg_reload_ammo 120
 set g_balance_hmg_reload_time 1
 set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
 set g_balance_hmg_switchdelay_drop 0.2
 set g_balance_hmg_switchdelay_raise 0.2
 set g_balance_hmg_weaponreplace ""
index fe3b9ed8711e62bb64ba564310ae573008677f6c..99edec78b8da1c543470adffdd3a155e967f6a5a 100644 (file)
@@ -465,6 +465,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 400
 set g_balance_devastator_remote_jump_damage 40
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 200
 set g_balance_devastator_remote_jump_velocity_z_add 500
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index c9bdb2aa367e5b11629c5778825d3c895e4f0539..95ac919b6a9e5d3c5d74e4a92771d47d1c9a5768 100644 (file)
@@ -399,6 +399,7 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 350
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 0
 set g_balance_devastator_remote_jump_radius 0
 set g_balance_devastator_remote_jump_velocity_z_add 400
 set g_balance_devastator_remote_jump_velocity_z_max 1500
index 64d79e150aee00e1e9abfbb90d420edede443993..9e1f4cb5ed7596d6c22659ef11759adeb2390661 100644 (file)
@@ -193,7 +193,7 @@ set g_balance_electro_primary_force 200
 set g_balance_electro_primary_lifetime 5
 set g_balance_electro_primary_midaircombo_explode 1
 set g_balance_electro_primary_midaircombo_interval 0.1
-set g_balance_electro_primary_midaircombo_radius 150
+set g_balance_electro_primary_midaircombo_radius 0
 set g_balance_electro_primary_radius 100
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_speed 2500
@@ -218,7 +218,7 @@ set g_balance_electro_secondary_refire2 1.6
 set g_balance_electro_secondary_speed 1000
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.04
+set g_balance_electro_secondary_spread 0
 set g_balance_electro_secondary_stick 0
 set g_balance_electro_secondary_touchexplode 1
 set g_balance_electro_switchdelay_drop 0.2
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -343,7 +343,7 @@ set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_refire 0.16667
 set g_balance_hagar_primary_speed 2200
-set g_balance_hagar_primary_spread 0.03
+set g_balance_hagar_primary_spread 0
 set g_balance_hagar_reload_ammo 0
 set g_balance_hagar_reload_time 2
 set g_balance_hagar_secondary 1
@@ -368,7 +368,7 @@ set g_balance_hagar_secondary_load_spread_bias 0.5
 set g_balance_hagar_secondary_radius 80
 set g_balance_hagar_secondary_refire 0.5
 set g_balance_hagar_secondary_speed 2000
-set g_balance_hagar_secondary_spread 0.05
+set g_balance_hagar_secondary_spread 0
 set g_balance_hagar_switchdelay_drop 0.2
 set g_balance_hagar_switchdelay_raise 0.2
 set g_balance_hagar_weaponreplace ""
@@ -399,8 +399,9 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 450
 set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
@@ -676,23 +677,23 @@ set g_balance_seeker_weaponthrowable 1
 // }}}
 // {{{ #19: Shockwave (MUTATOR WEAPON)
 set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
+set g_balance_shockwave_blast_damage 40
 set g_balance_shockwave_blast_distance 1000
 set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
+set g_balance_shockwave_blast_force 15
 set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
+set g_balance_shockwave_blast_force_zscale 1
 set g_balance_shockwave_blast_jump_damage 20
 set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
+set g_balance_shockwave_blast_jump_force 100
+set g_balance_shockwave_blast_jump_force_velocitybias 1
+set g_balance_shockwave_blast_jump_force_zscale 1
 set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
 set g_balance_shockwave_blast_jump_multiplier_distance 0.5
 set g_balance_shockwave_blast_jump_multiplier_min 0
 set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
+set g_balance_shockwave_blast_multiplier_accuracy 0.45
+set g_balance_shockwave_blast_multiplier_distance 0.2
 set g_balance_shockwave_blast_multiplier_min 0
 set g_balance_shockwave_blast_refire 0.75
 set g_balance_shockwave_blast_splash_damage 15
@@ -727,16 +728,16 @@ set g_balance_shockwave_weaponthrowable 0
 // }}}
 // {{{ #20: Arc
 set g_balance_arc_beam_ammo 6
-set g_balance_arc_beam_animtime 0.2
+set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
 set g_balance_arc_beam_botaimspeed 0
-set g_balance_arc_beam_damage 115
+set g_balance_arc_beam_damage 100
 set g_balance_arc_beam_degreespersegment 1
 set g_balance_arc_beam_distancepersegment 0
 set g_balance_arc_beam_falloff_halflifedist 0
 set g_balance_arc_beam_falloff_maxdist 0
 set g_balance_arc_beam_falloff_mindist 0
-set g_balance_arc_beam_force 900
+set g_balance_arc_beam_force 600
 set g_balance_arc_beam_healing_amax 0
 set g_balance_arc_beam_healing_aps 50
 set g_balance_arc_beam_healing_hmax 150
@@ -745,8 +746,8 @@ set g_balance_arc_cooldown 2.5
 set g_balance_arc_cooldown_release 0
 set g_balance_arc_overheat_max 5
 set g_balance_arc_overheat_min 3
-set g_balance_arc_beam_heat 0.75
-set g_balance_arc_burst_heat 4
+set g_balance_arc_beam_heat 0
+set g_balance_arc_burst_heat 5
 set g_balance_arc_beam_maxangle 10
 set g_balance_arc_beam_nonplayerdamage 80
 set g_balance_arc_beam_range 1000
@@ -763,7 +764,7 @@ set g_balance_arc_bolt_health 15
 set g_balance_arc_bolt_lifetime 5
 set g_balance_arc_bolt_radius 65
 set g_balance_arc_bolt_refire 0.16667
-set g_balance_arc_bolt_speed 2200
+set g_balance_arc_bolt_speed 2300
 set g_balance_arc_bolt_spread 0
 set g_balance_arc_burst_ammo 15
 set g_balance_arc_burst_damage 250
index 64d79e150aee00e1e9abfbb90d420edede443993..9e1f4cb5ed7596d6c22659ef11759adeb2390661 100644 (file)
@@ -193,7 +193,7 @@ set g_balance_electro_primary_force 200
 set g_balance_electro_primary_lifetime 5
 set g_balance_electro_primary_midaircombo_explode 1
 set g_balance_electro_primary_midaircombo_interval 0.1
-set g_balance_electro_primary_midaircombo_radius 150
+set g_balance_electro_primary_midaircombo_radius 0
 set g_balance_electro_primary_radius 100
 set g_balance_electro_primary_refire 0.6
 set g_balance_electro_primary_speed 2500
@@ -218,7 +218,7 @@ set g_balance_electro_secondary_refire2 1.6
 set g_balance_electro_secondary_speed 1000
 set g_balance_electro_secondary_speed_up 200
 set g_balance_electro_secondary_speed_z 0
-set g_balance_electro_secondary_spread 0.04
+set g_balance_electro_secondary_spread 0
 set g_balance_electro_secondary_stick 0
 set g_balance_electro_secondary_touchexplode 1
 set g_balance_electro_switchdelay_drop 0.2
@@ -325,8 +325,8 @@ set g_balance_vortex_secondary_damagefalloff_maxdist 0
 set g_balance_vortex_secondary_damagefalloff_mindist 0
 set g_balance_vortex_secondary_force 0
 set g_balance_vortex_secondary_refire 0
-set g_balance_vortex_switchdelay_drop 0.25
-set g_balance_vortex_switchdelay_raise 0.25
+set g_balance_vortex_switchdelay_drop 0.2
+set g_balance_vortex_switchdelay_raise 0.2
 set g_balance_vortex_weaponreplace ""
 set g_balance_vortex_weaponstart 0
 set g_balance_vortex_weaponstartoverride -1
@@ -343,7 +343,7 @@ set g_balance_hagar_primary_lifetime 5
 set g_balance_hagar_primary_radius 65
 set g_balance_hagar_primary_refire 0.16667
 set g_balance_hagar_primary_speed 2200
-set g_balance_hagar_primary_spread 0.03
+set g_balance_hagar_primary_spread 0
 set g_balance_hagar_reload_ammo 0
 set g_balance_hagar_reload_time 2
 set g_balance_hagar_secondary 1
@@ -368,7 +368,7 @@ set g_balance_hagar_secondary_load_spread_bias 0.5
 set g_balance_hagar_secondary_radius 80
 set g_balance_hagar_secondary_refire 0.5
 set g_balance_hagar_secondary_speed 2000
-set g_balance_hagar_secondary_spread 0.05
+set g_balance_hagar_secondary_spread 0
 set g_balance_hagar_switchdelay_drop 0.2
 set g_balance_hagar_switchdelay_raise 0.2
 set g_balance_hagar_weaponreplace ""
@@ -399,8 +399,9 @@ set g_balance_devastator_remote_damage 70
 set g_balance_devastator_remote_edgedamage 35
 set g_balance_devastator_remote_force 300
 set g_balance_devastator_remote_jump_damage 70
+set g_balance_devastator_remote_jump_force 450
 set g_balance_devastator_remote_jump_radius 0
-set g_balance_devastator_remote_jump_velocity_z_add 400
+set g_balance_devastator_remote_jump_velocity_z_add 0
 set g_balance_devastator_remote_jump_velocity_z_max 1500
 set g_balance_devastator_remote_jump_velocity_z_min 400
 set g_balance_devastator_remote_radius 110
@@ -676,23 +677,23 @@ set g_balance_seeker_weaponthrowable 1
 // }}}
 // {{{ #19: Shockwave (MUTATOR WEAPON)
 set g_balance_shockwave_blast_animtime 0.3
-set g_balance_shockwave_blast_damage 20
+set g_balance_shockwave_blast_damage 40
 set g_balance_shockwave_blast_distance 1000
 set g_balance_shockwave_blast_edgedamage 0
-set g_balance_shockwave_blast_force 200
+set g_balance_shockwave_blast_force 15
 set g_balance_shockwave_blast_force_forwardbias 50
-set g_balance_shockwave_blast_force_zscale 2
+set g_balance_shockwave_blast_force_zscale 1
 set g_balance_shockwave_blast_jump_damage 20
 set g_balance_shockwave_blast_jump_edgedamage 0
-set g_balance_shockwave_blast_jump_force 300
-set g_balance_shockwave_blast_jump_force_velocitybias 0
-set g_balance_shockwave_blast_jump_force_zscale 1.25
+set g_balance_shockwave_blast_jump_force 100
+set g_balance_shockwave_blast_jump_force_velocitybias 1
+set g_balance_shockwave_blast_jump_force_zscale 1
 set g_balance_shockwave_blast_jump_multiplier_accuracy 0.5
 set g_balance_shockwave_blast_jump_multiplier_distance 0.5
 set g_balance_shockwave_blast_jump_multiplier_min 0
 set g_balance_shockwave_blast_jump_radius 150
-set g_balance_shockwave_blast_multiplier_accuracy 0.5
-set g_balance_shockwave_blast_multiplier_distance 0.5
+set g_balance_shockwave_blast_multiplier_accuracy 0.45
+set g_balance_shockwave_blast_multiplier_distance 0.2
 set g_balance_shockwave_blast_multiplier_min 0
 set g_balance_shockwave_blast_refire 0.75
 set g_balance_shockwave_blast_splash_damage 15
@@ -727,16 +728,16 @@ set g_balance_shockwave_weaponthrowable 0
 // }}}
 // {{{ #20: Arc
 set g_balance_arc_beam_ammo 6
-set g_balance_arc_beam_animtime 0.2
+set g_balance_arc_beam_animtime 0.1
 set g_balance_arc_beam_botaimlifetime 0
 set g_balance_arc_beam_botaimspeed 0
-set g_balance_arc_beam_damage 115
+set g_balance_arc_beam_damage 100
 set g_balance_arc_beam_degreespersegment 1
 set g_balance_arc_beam_distancepersegment 0
 set g_balance_arc_beam_falloff_halflifedist 0
 set g_balance_arc_beam_falloff_maxdist 0
 set g_balance_arc_beam_falloff_mindist 0
-set g_balance_arc_beam_force 900
+set g_balance_arc_beam_force 600
 set g_balance_arc_beam_healing_amax 0
 set g_balance_arc_beam_healing_aps 50
 set g_balance_arc_beam_healing_hmax 150
@@ -745,8 +746,8 @@ set g_balance_arc_cooldown 2.5
 set g_balance_arc_cooldown_release 0
 set g_balance_arc_overheat_max 5
 set g_balance_arc_overheat_min 3
-set g_balance_arc_beam_heat 0.75
-set g_balance_arc_burst_heat 4
+set g_balance_arc_beam_heat 0
+set g_balance_arc_burst_heat 5
 set g_balance_arc_beam_maxangle 10
 set g_balance_arc_beam_nonplayerdamage 80
 set g_balance_arc_beam_range 1000
@@ -763,7 +764,7 @@ set g_balance_arc_bolt_health 15
 set g_balance_arc_bolt_lifetime 5
 set g_balance_arc_bolt_radius 65
 set g_balance_arc_bolt_refire 0.16667
-set g_balance_arc_bolt_speed 2200
+set g_balance_arc_bolt_speed 2300
 set g_balance_arc_bolt_spread 0
 set g_balance_arc_burst_ammo 15
 set g_balance_arc_burst_damage 250
index 7571001c67d01b143ab62216856087ff4b304a98..c55241962ba5817ff3d0e4df00fb09a3d023ece6 100644 (file)
@@ -65,15 +65,15 @@ set g_pickup_fuel_jetpack 100
 set g_pickup_fuel_max 100
 set g_pickup_armorsmall 5
 set g_pickup_armorsmall_max 20
-set g_pickup_armorsmall_anyway 0
+set g_pickup_armorsmall_anyway 1
 set g_pickup_armormedium 25
-set g_pickup_armormedium_max 200
+set g_pickup_armormedium_max 100
 set g_pickup_armormedium_anyway 1
 set g_pickup_armorbig 50
-set g_pickup_armorbig_max 200
+set g_pickup_armorbig_max 100
 set g_pickup_armorbig_anyway 1
 set g_pickup_armorlarge 100
-set g_pickup_armorlarge_max 200
+set g_pickup_armorlarge_max 100
 set g_pickup_armorlarge_anyway 1
 set g_pickup_healthsmall 5
 set g_pickup_healthsmall_max 200
@@ -119,12 +119,12 @@ set g_balance_armor_regen 0
 set g_balance_armor_regenlinear 0
 set g_balance_armor_rot 0
 set g_balance_armor_rotlinear 1
-set g_balance_pause_armor_rot 1
+set g_balance_pause_armor_rot 5
 set g_balance_pause_armor_rot_spawn 5
 set g_balance_armor_regenstable 100
 set g_balance_armor_rotstable 0
 set g_balance_armor_limit 999
-set g_balance_armor_blockpercent 0.7
+set g_balance_armor_blockpercent 0.6
 set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)"
 set g_balance_fuel_regenlinear 0
 set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter
index 538e3549fc5cc41ca4d8bebb03226129243a0f4a..8eaf852e7f7318864ddebdc7cfcdccb76ec358fe 100644 (file)
@@ -79,12 +79,14 @@ seta cl_zoomsensitivity 0   "how zoom changes sensitivity (0 = weakest, 1 = strong
 seta cl_unpress_zoom_on_spawn 1 "automatically unpress zoom when you spawn"
 seta cl_unpress_zoom_on_death 1 "automatically unpress zoom when you die (and don't allow zoom again while dead)"
 seta cl_unpress_zoom_on_weapon_switch 1 "automatically unpress zoom when you switch a weapon"
-seta cl_unpress_attack_on_weapon_switch 1 "automatically unpress fire and fire1 attack buttons when you switch a weapon"
+seta cl_unpress_attack_on_weapon_switch 0 "automatically unpress fire and fire1 attack buttons when you switch a weapon"
 
 seta cl_spawn_event_particles 1 "pointparticles effect whenever a player spawns"
 seta cl_spawn_event_sound 1 "sound effect whenever a player spawns"
 //seta cl_spawn_point_model 0 "place a model at all spawn points" // still needs a model
 seta cl_spawn_point_particles 1 "pointparticles effect at all spawn points" // managed by effects-.cfg files
+seta cl_spawn_point_dist_min 1200
+seta cl_spawn_point_dist_max 1600
 
 freelook 1
 sensitivity 6
@@ -214,8 +216,8 @@ set sv_mapchange_delay 5
 set minplayers 0 "number of players playing at the same time (if not enough real players are there the remaining slots are filled with bots)"
 
 // restart server if all players hit "ready"-button
-set sv_ready_restart 0 "if set to 1 allow a map to be restarted once all players pressed the \"ready\" button'"
-set sv_ready_restart_after_countdown 0 "if set to 1 the players and map items are reset after the countdown ended, otherwise they're reset already at the beginning of the countdown"
+set sv_ready_restart 0 "allow a map to be restarted once all players pressed the \"ready\" button"
+set sv_ready_restart_after_countdown 0 "reset players and map items after the countdown ended, instead of at the beginning of the countdown"
 set sv_ready_restart_repeatable 0      "allows the players to restart the game as often as needed"
 
 seta cl_hitsound 1 "play a hit notifier sound when you have hit an enemy, 1: same pitch 2: increase pitch with more damage 3: decrease pitch with more damage"
@@ -235,26 +237,26 @@ seta cl_eventchase_viewoffset "0 0 20" "viewoffset of eventchase camera"
 seta cl_eventchase_generator_viewoffset "0 0 80" "viewoffset of eventchase camera while viewing generator explosion"
 
 //nifreks lockonrestart feature, used in team-based game modes, if set to 1 and all players readied up no other player can then join the game anymore, useful to block spectators from joining
-set teamplay_lockonrestart 0 "it set to 1 in a team-based game, the teams are locked once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)"
+set teamplay_lockonrestart 0 "lock teams once all players readied up and the game restarted (no new players can join after restart unless using the server-command unlockteams)"
 
 set g_maxplayers 0     "maximum number of players allowed to play at the same time, set to 0 to allow all players to join the game"
 set g_maxplayers_spectator_blocktime 5 "if the players voted for the \"nospectators\" command, this setting defines the number of seconds a observer/spectator has time to join the game before he gets kicked"
 
 // tournament mod
-set g_warmup 0 "split the game into a warmup- and match-stage when set to 1"
-set g_warmup_limit 0   "if set to -1 the warmup-stage is not affected by any timelimit, if set to 0 the usual timelimit also affects warmup-stage, otherwise warmup will be limited to this time in SECONDS (useful for public matches)"
-set g_warmup_allow_timeout 0   "if set to 1 timeouts can also be called in the warmup-stage, when sv_timeout is set to 1"
+set g_warmup 0 "split the game into a warmup- and match-stage"
+set g_warmup_limit 0   "limit warmup-stage to this time (in seconds); if set to -1 the warmup-stage is not affected by any timelimit, if set to 0 the usual timelimit also affects warmup-stage"
+set g_warmup_allow_timeout 0   "allow calling timeouts in the warmup-stage (if sv_timeout is set to 1)"
 set g_warmup_allguns 1 "provide more weapons on start while in warmup: 0 = normal start weapons, 1 = all guns available on the map, 2 = all normal weapons"
 set g_warmup_majority_factor 0.8 "minimum percentage of players ready needed for warmup to end"
 
 set g_chat_nospectators 0      "if 0 spec/observer chat is always visible to the player, if 1 it is never visible to players, if 2 it is only visible to players during warmup stage"
-set sv_vote_nospectators 0     "Only players can call a vote (thus spectators and observers can't call a vote): 0 = all people can vote, 1 = spectators can vote in warmup stage, 2 = only players can vote (no exceptions)."
+set sv_vote_nospectators 0     "only players can call a vote (thus spectators and observers can't call a vote): 0 = all people can vote, 1 = spectators can vote in warmup stage, 2 = only players can vote (no exceptions)."
 
 alias g_tourney "g_tourney_$1"
 alias g_tourney_1 "g_warmup 1; g_chat_nospectators 2; sv_vote_nospectators 1"
 alias g_tourney_0 "g_warmup 0; g_chat_nospectators 0; sv_vote_nospectators 0"
 
-set sv_timeout 0       "allows a player to call a timeout, this will pause the game for some time"
+set sv_timeout 0       "allow a player to call a timeout, this will pause the game for some time"
 set sv_timeout_length 120      "how long the game will be paused at max, in seconds"
 set sv_timeout_number 2        "how many timeouts one player is allowed to call (gets reset after a restart)"
 set sv_timeout_leadtime 4      "how long the players will be informed that a timeout was called before it starts, in seconds"
@@ -268,7 +270,7 @@ set g_telefrags_teamplay 1 "never telefrag team mates"
 set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen"
 set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed"
 
-seta cl_damageeffect 1 "enable weapon damage effects. 1 enables the feature on skeletal models, 2 on any model"
+seta cl_damageeffect 1 "enable weapon damage effects: 1 enables the feature on skeletal models, 2 on any model"
 seta cl_damageeffect_ticrate 0.1 "particle spawn rate"
 seta cl_damageeffect_bones 5 "how many damages to allow on a rigged mesh at once (non-skeletal objects are limited to one)"
 seta cl_damageeffect_distribute 1 "divide particle intensity if multiple damages are present"
@@ -287,6 +289,10 @@ set sv_gibhealth 100 "Minus health a dead body must have in order to get gibbed"
 set sv_friction_on_land 0
 set sv_friction_slick 0.5
 
+set sv_slick_applygravity 0
+
+set sv_aircontrol_backwards 0 "apply forward aircontrol options to backward movement"
+
 set sv_player_viewoffset "0 0 35" "view offset of the player model"
 set sv_player_mins "-16 -16 -24" "playermodel mins"
 set sv_player_maxs "16 16 45" "playermodel maxs"
@@ -682,7 +688,8 @@ alias sv_fbskin_off "sv_defaultcharacter 0; sv_defaultplayerskin 0; sv_defaultpl
 seta sv_servermodelsonly 1
 
 cl_curl_enabled 1
-cl_curl_maxspeed 500
+cl_curl_maxdownloads 3
+cl_curl_maxspeed 0
 cl_curl_useragent 1
 cl_curl_useragent_append "$g_xonoticversion"
 
@@ -694,7 +701,7 @@ set sv_motd ""
 set g_waypoints_for_items 0    "make waypoints out of items, values: 0 = never, 1 = unless the mapper prevents it by worldspawn.spawnflags & 1, 2 = always"
 
 seta g_maplist_votable 6 "number of maps that are shown in the map voting at the end of a match"
-seta g_maplist_votable_keeptwotime 15
+seta g_maplist_votable_keeptwotime 15 "show only 2 options after this amount of time during map vote screen"
 seta g_maplist_votable_timeout 30      "timeout for the map voting; must be below 50 seconds!"
 seta g_maplist_votable_suggestions 2
 seta g_maplist_votable_suggestions_override_mostrecent 0
@@ -703,7 +710,7 @@ seta g_maplist_votable_abstain 0    "when 1, you can abstain from your vote"
 seta g_maplist_votable_screenshot_dir "maps levelshots"        "where to look for map screenshots"
 
 set sv_vote_gametype 0 "show a vote screen for gametypes before map vote screen"
-set sv_vote_gametype_keeptwotime 10 "show only 2 options for this amount of time during gametype vote screen"
+set sv_vote_gametype_keeptwotime 10 "show only 2 options after this amount of time during gametype vote screen"
 set sv_vote_gametype_options "dm ctf ca lms tdm ft"
 set sv_vote_gametype_timeout 20
 set sv_vote_gametype_default_current 1 "Keep the current gametype if no one votes"
@@ -887,7 +894,7 @@ seta menu_slist_categories_CAT_FAVORITED_override ""
 seta menu_slist_categories_CAT_RECOMMENDED_override ""
 seta menu_slist_categories_CAT_NORMAL_override ""
 seta menu_slist_categories_CAT_SERVERS_override "CAT_NORMAL"
-seta menu_slist_categories_CAT_XPM_override "CAT_NORMAL"
+seta menu_slist_categories_CAT_XPM_override ""
 seta menu_slist_categories_CAT_MODIFIED_override ""
 seta menu_slist_categories_CAT_OVERKILL_override ""
 seta menu_slist_categories_CAT_INSTAGIB_override ""
@@ -1091,6 +1098,7 @@ set g_showweaponspawns 1 "1: display waypoints for weapon spawns found on the ma
 set g_ballistics_mindistance 2 // enable ballistics starting from 2 qu
 set g_ballistics_density_player 0.50 // players are 2x as easy to pass as walls
 set g_ballistics_density_corpse 0.10 // corpses are 10x as easy to pass as walls
+set g_ballistics_penetrate_clips 0 "allow ballistics to pass through weapon clips"
 
 set cl_stripcolorcodes 0       "experimental feature (notes: strips ALL color codes from messages!)"
 
@@ -1447,6 +1455,8 @@ alias menu_sync "menu_cmd sync"
 set sv_join_notices ""
 set sv_join_notices_time 15
 
+seta cl_items_nofade 0
+seta cl_animate_items 1
 seta cl_ghost_items 0.45 "enable ghosted items (when between 0 and 1, overrides the alpha value)"
 seta cl_ghost_items_color "-1 -1 -1" "color of ghosted items, 0 0 0 leaves the color unchanged"
 set sv_simple_items 1 "allow or forbid client use of simple items"
index add2332726f51f1eb52df2f2e495a9be791f0693..71f0dc1792200bea112c846ba847e47c7526bf29 100644 (file)
@@ -259,9 +259,10 @@ set g_ctf_oneflag_reverse 0 "apply reverse mode to oneflag CTF (take flag to ene
 set g_ctf_flag_return 1 "auto return the flag to base when touched by a teammate"
 set g_ctf_flag_return_carrying 0 "(manual return mode) auto return the flag to base if touched by a flag carrier"
 set g_ctf_flag_return_carried_radius 100 "allow flags to be returned by carrier if base is within this radius"
-set g_ctf_flag_return_time 15
-set g_ctf_flag_return_dropped 100
-set g_ctf_flag_return_damage 0
+set g_ctf_flag_return_time 15 "automatically return the flag to base after this amount of time"
+set g_ctf_flag_return_dropped 100 "automatically return the flag to base if dropped within this distance from base (in qu)"
+set g_ctf_flag_return_damage 0 "allow the flag to be damaged, reducing time needed to automatically return to base"
+set g_ctf_flag_return_damage_delay 0 "how much time the flag takes to automatically return to base if it falls into lava/slime/trigger hurt"
 set g_ctf_flag_return_when_unreachable 1 "automatically return the flag if it falls into lava/slime/trigger hurt"
 set g_ctf_flagcarrier_auto_helpme_damage 100 "automatically place a helpme notification on flag carrier waypointsprite if they get hit and their health dips below this value"
 set g_ctf_flagcarrier_auto_helpme_time 2 "antispam time for the helpme notification"
@@ -488,6 +489,7 @@ set g_nexball_sound_bounce   1    "bouncing sound (0: off)"
 set g_nexball_basketball_trail  1  "1 to leave a trail"
 set g_nexball_football_trail    0  "1 to leave a trail"
 set g_nexball_trail_color     254  "1-256 for different colors (Quake palette, 254 is white)"
+set g_nexball_playerclip_collisions 1 "make the ball bounce off clips"
 set g_nexball_radar_showallplayers 1  "1: show every player and the ball on the radar  0: only show teammates and the ball on the radar"
 seta g_nexball_safepass_maxdist 5000 "Max distance to allow save fassping (0 to turn off safe passing)"
 seta g_nexball_safepass_turnrate 0.1 "How fast the safe-pass ball can habge direction"
diff --git a/gfx/menu/luma/icon_mod_jeff.tga b/gfx/menu/luma/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..ba3080a
Binary files /dev/null and b/gfx/menu/luma/icon_mod_jeff.tga differ
diff --git a/gfx/menu/luminos/icon_mod_jeff.tga b/gfx/menu/luminos/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/luminos/icon_mod_jeff.tga differ
diff --git a/gfx/menu/wickedx/icon_mod_jeff.tga b/gfx/menu/wickedx/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/wickedx/icon_mod_jeff.tga differ
diff --git a/gfx/menu/xaw/icon_mod_jeff.tga b/gfx/menu/xaw/icon_mod_jeff.tga
new file mode 100644 (file)
index 0000000..4bf904b
Binary files /dev/null and b/gfx/menu/xaw/icon_mod_jeff.tga differ
index 6dfec5088f886a3b229b0185c35f2e6d24a4ff17..4be8cf69bb9ce4d0737cfd1c7d05f94ec0850fd6 100644 (file)
@@ -19,3 +19,4 @@ set sv_minigames_snake_wrap 0 "Wrap around the edges of the screen instead of dy
 set sv_minigames_snake_delay_initial 0.7 "Initial delay between snake movement"
 set sv_minigames_snake_delay_multiplier 50 "Multiplier of incremental of movement speed (player_score / cvar)"
 set sv_minigames_snake_delay_min 0.1 "Minimum delay between snake movement (at fastest rate)"
+set sv_minigames_snake_lives 3
index d82be653c503d8c73def6e4380f3f29b13b0bfd0..6d12e37cf183f113d93440926454858bb6592b8d 100644 (file)
 // bulldozer storage "level1" last updated 16-11-2015 03:11:33
 nextlevel = "level2"
-"k11" 1 "0 -1 0"
-"a20" 6 "0 0 0"
-"a19" 6 "0 0 0"
-"a18" 6 "0 0 0"
-"a17" 6 "0 0 0"
-"a15" 6 "0 0 0"
-"a14" 6 "0 0 0"
-"a13" 6 "0 0 0"
-"a12" 6 "0 0 0"
-"a11" 6 "0 0 0"
-"a10" 6 "0 0 0"
-"a9" 6 "0 0 0"
-"a8" 6 "0 0 0"
-"a7" 6 "0 0 0"
-"a6" 6 "0 0 0"
-"a5" 6 "0 0 0"
-"a4" 6 "0 0 0"
-"a3" 6 "0 0 0"
-"a2" 6 "0 0 0"
-"a1" 6 "0 0 0"
-"b1" 6 "0 0 0"
-"c1" 6 "0 0 0"
-"d1" 6 "0 0 0"
-"e1" 6 "0 0 0"
-"f1" 6 "0 0 0"
-"g1" 6 "0 0 0"
-"h1" 6 "0 0 0"
-"i1" 6 "0 0 0"
-"j1" 6 "0 0 0"
-"k1" 6 "0 0 0"
-"l1" 6 "0 0 0"
-"m1" 6 "0 0 0"
-"n1" 6 "0 0 0"
-"o1" 6 "0 0 0"
-"p1" 6 "0 0 0"
-"q1" 6 "0 0 0"
-"r1" 6 "0 0 0"
-"s1" 6 "0 0 0"
-"t1" 6 "0 0 0"
-"t2" 6 "0 0 0"
-"t3" 6 "0 0 0"
-"t4" 6 "0 0 0"
-"t5" 6 "0 0 0"
-"t6" 6 "0 0 0"
-"t7" 6 "0 0 0"
-"t8" 6 "0 0 0"
-"t9" 6 "0 0 0"
-"t10" 6 "0 0 0"
-"t11" 6 "0 0 0"
-"t12" 6 "0 0 0"
-"t13" 6 "0 0 0"
-"t14" 6 "0 0 0"
-"t15" 6 "0 0 0"
-"t16" 6 "0 0 0"
-"t17" 6 "0 0 0"
-"t18" 6 "0 0 0"
-"t19" 6 "0 0 0"
-"t20" 6 "0 0 0"
-"s20" 6 "0 0 0"
-"r20" 6 "0 0 0"
-"q20" 6 "0 0 0"
-"p20" 6 "0 0 0"
-"o20" 6 "0 0 0"
-"n20" 6 "0 0 0"
-"m20" 6 "0 0 0"
-"l20" 6 "0 0 0"
-"k20" 6 "0 0 0"
-"j20" 6 "0 0 0"
-"i20" 6 "0 0 0"
-"h20" 6 "0 0 0"
-"g20" 6 "0 0 0"
-"f20" 6 "0 0 0"
-"e20" 6 "0 0 0"
-"d20" 6 "0 0 0"
-"c20" 6 "0 0 0"
-"b20" 6 "0 0 0"
-"a16" 6 "0 0 0"
-"b2" 4 "0 0 0"
-"c18" 6 "0 0 0"
-"e18" 6 "0 0 0"
-"e17" 6 "0 0 0"
-"e16" 6 "0 0 0"
-"e15" 6 "0 0 0"
-"e14" 6 "0 0 0"
-"e13" 6 "0 0 0"
-"e12" 6 "0 0 0"
-"e11" 6 "0 0 0"
-"f10" 4 "0 0 0"
-"e9" 6 "0 0 0"
-"e8" 6 "0 0 0"
-"e7" 6 "0 0 0"
-"e6" 6 "0 0 0"
-"e5" 6 "0 0 0"
-"e4" 6 "0 0 0"
-"e3" 6 "0 0 0"
-"e2" 6 "0 0 0"
-"e19" 6 "0 0 0"
-"c17" 6 "0 0 0"
-"c16" 6 "0 0 0"
-"c15" 6 "0 0 0"
-"c14" 6 "0 0 0"
-"c13" 6 "0 0 0"
-"c12" 6 "0 0 0"
-"c11" 6 "0 0 0"
-"c10" 6 "0 0 0"
-"c9" 6 "0 0 0"
-"c8" 6 "0 0 0"
-"c7" 6 "0 0 0"
-"c6" 6 "0 0 0"
-"c5" 6 "0 0 0"
-"c4" 6 "0 0 0"
-"c3" 6 "0 0 0"
-"c2" 6 "0 0 0"
-"c19" 6 "0 0 0"
-"i14" 5 "0 0 0"
-"f12" 4 "0 0 0"
-"f11" 4 "0 0 0"
-"e10" 6 "0 0 0"
-"i10" 5 "0 0 0"
-"h10" 5 "0 0 0"
-"j10" 5 "0 0 0"
-"j9" 5 "0 0 0"
-"g11" 5 "0 0 0"
-"j8" 5 "0 0 0"
-"k8" 5 "0 0 0"
-"l8" 5 "0 0 0"
-"l9" 5 "0 0 0"
-"i8" 4 "0 0 0"
-"i9" 4 "0 0 0"
-"m11" 5 "0 0 0"
-"l10" 5 "0 0 0"
-"n11" 5 "0 0 0"
-"n13" 5 "0 0 0"
-"n12" 5 "0 0 0"
-"m13" 5 "0 0 0"
-"k13" 5 "0 0 0"
-"k14" 5 "0 0 0"
-"k15" 5 "0 0 0"
-"j15" 5 "0 0 0"
-"i13" 5 "0 0 0"
-"h15" 4 "0 0 0"
-"h14" 4 "0 0 0"
-"h13" 4 "0 0 0"
-"g15" 4 "0 0 0"
-"p17" 6 "0 0 0"
-"p16" 6 "0 0 0"
-"l13" 5 "0 0 0"
-"h12" 5 "0 0 0"
-"i15" 5 "0 0 0"
-"l15" 4 "0 0 0"
-"m15" 4 "0 0 0"
-"l14" 4 "0 0 0"
-"m14" 4 "0 0 0"
-"n14" 4 "0 0 0"
-"p15" 6 "0 0 0"
-"p14" 6 "0 0 0"
-"l11" 5 "0 0 0"
-"h11" 2 "0 0 0"
-"k9" 2 "0 0 0"
-"j14" 2 "0 0 0"
-"m12" 2 "0 0 0"
-"l12" 3 "0 0 0"
-"j11" 3 "0 0 0"
-"j12" 3 "0 0 0"
-"k10" 3 "0 0 0"
-"i12" 5 "0 0 0"
-"g12" 5 "0 0 0"
-"g10" 5 "0 0 0"
-"p13" 6 "0 0 0"
-"p12" 6 "0 0 0"
-"p11" 6 "0 0 0"
-"p10" 6 "0 0 0"
-"p9" 6 "0 0 0"
-"p8" 6 "0 0 0"
-"p7" 6 "0 0 0"
-"p6" 6 "0 0 0"
-"p5" 6 "0 0 0"
-"p4" 6 "0 0 0"
-"p3" 6 "0 0 0"
-"p2" 6 "0 0 0"
-"p18" 6 "0 0 0"
-"p19" 6 "0 0 0"
-"r16" 6 "0 0 0"
-"r15" 6 "0 0 0"
-"r14" 6 "0 0 0"
-"r13" 6 "0 0 0"
-"r12" 6 "0 0 0"
-"r11" 6 "0 0 0"
-"r10" 6 "0 0 0"
-"r9" 6 "0 0 0"
-"r8" 6 "0 0 0"
-"r7" 6 "0 0 0"
-"r6" 6 "0 0 0"
-"r5" 6 "0 0 0"
-"r4" 6 "0 0 0"
-"r3" 6 "0 0 0"
-"r2" 6 "0 0 0"
-"r17" 6 "0 0 0"
-"r18" 6 "0 0 0"
-"r19" 6 "0 0 0"
-"d12" 4 "0 0 0"
-"d6" 4 "0 0 0"
-"f6" 4 "0 0 0"
-"f7" 4 "0 0 0"
-"f8" 4 "0 0 0"
-"f9" 4 "0 0 0"
-"h9" 4 "0 0 0"
-"g9" 4 "0 0 0"
-"g8" 4 "0 0 0"
-"g7" 4 "0 0 0"
-"g6" 4 "0 0 0"
-"g5" 4 "0 0 0"
-"g4" 4 "0 0 0"
-"h6" 4 "0 0 0"
-"h7" 4 "0 0 0"
-"h8" 4 "0 0 0"
-"i7" 4 "0 0 0"
-"i6" 4 "0 0 0"
-"j6" 4 "0 0 0"
-"k6" 4 "0 0 0"
-"j7" 4 "0 0 0"
-"k7" 4 "0 0 0"
-"l6" 4 "0 0 0"
-"l7" 4 "0 0 0"
-"m10" 4 "0 0 0"
-"m8" 4 "0 0 0"
-"m7" 4 "0 0 0"
-"m6" 4 "0 0 0"
-"m5" 4 "0 0 0"
-"m4" 4 "0 0 0"
-"m3" 4 "0 0 0"
-"m2" 4 "0 0 0"
-"f19" 4 "0 0 0"
-"f18" 4 "0 0 0"
-"f17" 4 "0 0 0"
-"f16" 4 "0 0 0"
-"f15" 4 "0 0 0"
-"f13" 4 "0 0 0"
-"l3" 4 "0 0 0"
-"l4" 4 "0 0 0"
-"l5" 4 "0 0 0"
-"j3" 4 "0 0 0"
-"j2" 4 "0 0 0"
-"k3" 4 "0 0 0"
-"i3" 4 "0 0 0"
-"g3" 4 "0 0 0"
-"h3" 4 "0 0 0"
-"f3" 4 "0 0 0"
-"d3" 4 "0 0 0"
-"d19" 4 "0 0 0"
-"d17" 4 "0 0 0"
-"d5" 4 "0 0 0"
-"d4" 4 "0 0 0"
-"d7" 4 "0 0 0"
-"h5" 4 "0 0 0"
-"h4" 4 "0 0 0"
-"i4" 4 "0 0 0"
-"j4" 4 "0 0 0"
-"k5" 4 "0 0 0"
-"j5" 4 "0 0 0"
-"i5" 4 "0 0 0"
-"d18" 4 "0 0 0"
-"d10" 4 "0 0 0"
-"g13" 4 "0 0 0"
-"g14" 4 "0 0 0"
-"k4" 4 "0 0 0"
-"d8" 4 "0 0 0"
-"d9" 4 "0 0 0"
-"g16" 4 "0 0 0"
-"g17" 4 "0 0 0"
-"g18" 4 "0 0 0"
-"d11" 4 "0 0 0"
-"g19" 4 "0 0 0"
-"h19" 4 "0 0 0"
-"h18" 4 "0 0 0"
-"h16" 4 "0 0 0"
-"h17" 4 "0 0 0"
-"i16" 4 "0 0 0"
-"i17" 4 "0 0 0"
-"i18" 4 "0 0 0"
-"j19" 4 "0 0 0"
-"j18" 4 "0 0 0"
-"j17" 4 "0 0 0"
-"i19" 4 "0 0 0"
-"j16" 4 "0 0 0"
-"k16" 4 "0 0 0"
-"k17" 4 "0 0 0"
-"k18" 4 "0 0 0"
-"k19" 4 "0 0 0"
-"l19" 4 "0 0 0"
-"f5" 4 "0 0 0"
-"f4" 4 "0 0 0"
-"l18" 4 "0 0 0"
-"l17" 4 "0 0 0"
-"l16" 4 "0 0 0"
-"m16" 4 "0 0 0"
-"m17" 4 "0 0 0"
-"m18" 4 "0 0 0"
-"n19" 4 "0 0 0"
-"m19" 4 "0 0 0"
-"n18" 4 "0 0 0"
-"n17" 4 "0 0 0"
-"n16" 4 "0 0 0"
-"n15" 4 "0 0 0"
-"n10" 4 "0 0 0"
-"n9" 4 "0 0 0"
-"n8" 4 "0 0 0"
-"n7" 4 "0 0 0"
-"n6" 4 "0 0 0"
-"n5" 4 "0 0 0"
-"n4" 4 "0 0 0"
-"n3" 4 "0 0 0"
-"m9" 4 "0 0 0"
-"s2" 4 "0 0 0"
-"s3" 4 "0 0 0"
-"s4" 4 "0 0 0"
-"s5" 4 "0 0 0"
-"s6" 4 "0 0 0"
-"s7" 4 "0 0 0"
-"s8" 4 "0 0 0"
-"s9" 4 "0 0 0"
-"s10" 4 "0 0 0"
-"s11" 4 "0 0 0"
-"s12" 4 "0 0 0"
-"s13" 4 "0 0 0"
-"s14" 4 "0 0 0"
-"s15" 4 "0 0 0"
-"s16" 4 "0 0 0"
-"s17" 4 "0 0 0"
-"s18" 4 "0 0 0"
-"s19" 4 "0 0 0"
-"q19" 4 "0 0 0"
-"o19" 4 "0 0 0"
-"o18" 4 "0 0 0"
-"o17" 4 "0 0 0"
-"o16" 4 "0 0 0"
-"o15" 4 "0 0 0"
-"o14" 4 "0 0 0"
-"o13" 4 "0 0 0"
-"o12" 4 "0 0 0"
-"o11" 4 "0 0 0"
-"o10" 4 "0 0 0"
-"o9" 4 "0 0 0"
-"o8" 4 "0 0 0"
-"o7" 4 "0 0 0"
-"o6" 4 "0 0 0"
-"o5" 4 "0 0 0"
-"o4" 4 "0 0 0"
-"o3" 4 "0 0 0"
-"q8" 4 "0 0 0"
-"q15" 4 "0 0 0"
-"q16" 4 "0 0 0"
-"q17" 4 "0 0 0"
-"q18" 4 "0 0 0"
-"q3" 4 "0 0 0"
-"q4" 4 "0 0 0"
-"q6" 4 "0 0 0"
-"q7" 4 "0 0 0"
-"q5" 4 "0 0 0"
-"q9" 4 "0 0 0"
-"q10" 4 "0 0 0"
-"q11" 4 "0 0 0"
-"q12" 4 "0 0 0"
-"q13" 4 "0 0 0"
-"q14" 4 "0 0 0"
-"b14" 4 "0 0 0"
-"b13" 4 "0 0 0"
-"d13" 4 "0 0 0"
-"d14" 4 "0 0 0"
-"d15" 4 "0 0 0"
-"b15" 4 "0 0 0"
-"b16" 4 "0 0 0"
-"d16" 4 "0 0 0"
-"b17" 4 "0 0 0"
-"b18" 4 "0 0 0"
-"b19" 4 "0 0 0"
-"f2" 4 "0 0 0"
-"g2" 4 "0 0 0"
-"h2" 4 "0 0 0"
-"i2" 4 "0 0 0"
-"k2" 4 "0 0 0"
-"l2" 4 "0 0 0"
-"n2" 4 "0 0 0"
-"o2" 4 "0 0 0"
-"q2" 4 "0 0 0"
-"f14" 4 "0 0 0"
-"b12" 4 "0 0 0"
-"b11" 4 "0 0 0"
-"b10" 4 "0 0 0"
-"b9" 4 "0 0 0"
-"b8" 4 "0 0 0"
-"b7" 4 "0 0 0"
-"b6" 4 "0 0 0"
-"b5" 4 "0 0 0"
-"b4" 4 "0 0 0"
-"b3" 4 "0 0 0"
-"d2" 4 "0 0 0"
+"k11" 1 1
+"a20" 6 0
+"a19" 6 0
+"a18" 6 0
+"a17" 6 0
+"a15" 6 0
+"a14" 6 0
+"a13" 6 0
+"a12" 6 0
+"a11" 6 0
+"a10" 6 0
+"a9" 6 0
+"a8" 6 0
+"a7" 6 0
+"a6" 6 0
+"a5" 6 0
+"a4" 6 0
+"a3" 6 0
+"a2" 6 0
+"a1" 6 0
+"b1" 6 0
+"c1" 6 0
+"d1" 6 0
+"e1" 6 0
+"f1" 6 0
+"g1" 6 0
+"h1" 6 0
+"i1" 6 0
+"j1" 6 0
+"k1" 6 0
+"l1" 6 0
+"m1" 6 0
+"n1" 6 0
+"o1" 6 0
+"p1" 6 0
+"q1" 6 0
+"r1" 6 0
+"s1" 6 0
+"t1" 6 0
+"t2" 6 0
+"t3" 6 0
+"t4" 6 0
+"t5" 6 0
+"t6" 6 0
+"t7" 6 0
+"t8" 6 0
+"t9" 6 0
+"t10" 6 0
+"t11" 6 0
+"t12" 6 0
+"t13" 6 0
+"t14" 6 0
+"t15" 6 0
+"t16" 6 0
+"t17" 6 0
+"t18" 6 0
+"t19" 6 0
+"t20" 6 0
+"s20" 6 0
+"r20" 6 0
+"q20" 6 0
+"p20" 6 0
+"o20" 6 0
+"n20" 6 0
+"m20" 6 0
+"l20" 6 0
+"k20" 6 0
+"j20" 6 0
+"i20" 6 0
+"h20" 6 0
+"g20" 6 0
+"f20" 6 0
+"e20" 6 0
+"d20" 6 0
+"c20" 6 0
+"b20" 6 0
+"a16" 6 0
+"b2" 4 0
+"c18" 6 0
+"e18" 6 0
+"e17" 6 0
+"e16" 6 0
+"e15" 6 0
+"e14" 6 0
+"e13" 6 0
+"e12" 6 0
+"e11" 6 0
+"f10" 4 0
+"e9" 6 0
+"e8" 6 0
+"e7" 6 0
+"e6" 6 0
+"e5" 6 0
+"e4" 6 0
+"e3" 6 0
+"e2" 6 0
+"e19" 6 0
+"c17" 6 0
+"c16" 6 0
+"c15" 6 0
+"c14" 6 0
+"c13" 6 0
+"c12" 6 0
+"c11" 6 0
+"c10" 6 0
+"c9" 6 0
+"c8" 6 0
+"c7" 6 0
+"c6" 6 0
+"c5" 6 0
+"c4" 6 0
+"c3" 6 0
+"c2" 6 0
+"c19" 6 0
+"i14" 5 0
+"f12" 4 0
+"f11" 4 0
+"e10" 6 0
+"i10" 5 0
+"h10" 5 0
+"j10" 5 0
+"j9" 5 0
+"g11" 5 0
+"j8" 5 0
+"k8" 5 0
+"l8" 5 0
+"l9" 5 0
+"i8" 4 0
+"i9" 4 0
+"m11" 5 0
+"l10" 5 0
+"n11" 5 0
+"n13" 5 0
+"n12" 5 0
+"m13" 5 0
+"k13" 5 0
+"k14" 5 0
+"k15" 5 0
+"j15" 5 0
+"i13" 5 0
+"h15" 4 0
+"h14" 4 0
+"h13" 4 0
+"g15" 4 0
+"p17" 6 0
+"p16" 6 0
+"l13" 5 0
+"h12" 5 0
+"i15" 5 0
+"l15" 4 0
+"m15" 4 0
+"l14" 4 0
+"m14" 4 0
+"n14" 4 0
+"p15" 6 0
+"p14" 6 0
+"l11" 5 0
+"h11" 2 0
+"k9" 2 0
+"j14" 2 0
+"m12" 2 0
+"l12" 3 0
+"j11" 3 0
+"j12" 3 0
+"k10" 3 0
+"i12" 5 0
+"g12" 5 0
+"g10" 5 0
+"p13" 6 0
+"p12" 6 0
+"p11" 6 0
+"p10" 6 0
+"p9" 6 0
+"p8" 6 0
+"p7" 6 0
+"p6" 6 0
+"p5" 6 0
+"p4" 6 0
+"p3" 6 0
+"p2" 6 0
+"p18" 6 0
+"p19" 6 0
+"r16" 6 0
+"r15" 6 0
+"r14" 6 0
+"r13" 6 0
+"r12" 6 0
+"r11" 6 0
+"r10" 6 0
+"r9" 6 0
+"r8" 6 0
+"r7" 6 0
+"r6" 6 0
+"r5" 6 0
+"r4" 6 0
+"r3" 6 0
+"r2" 6 0
+"r17" 6 0
+"r18" 6 0
+"r19" 6 0
+"d12" 4 0
+"d6" 4 0
+"f6" 4 0
+"f7" 4 0
+"f8" 4 0
+"f9" 4 0
+"h9" 4 0
+"g9" 4 0
+"g8" 4 0
+"g7" 4 0
+"g6" 4 0
+"g5" 4 0
+"g4" 4 0
+"h6" 4 0
+"h7" 4 0
+"h8" 4 0
+"i7" 4 0
+"i6" 4 0
+"j6" 4 0
+"k6" 4 0
+"j7" 4 0
+"k7" 4 0
+"l6" 4 0
+"l7" 4 0
+"m10" 4 0
+"m8" 4 0
+"m7" 4 0
+"m6" 4 0
+"m5" 4 0
+"m4" 4 0
+"m3" 4 0
+"m2" 4 0
+"f19" 4 0
+"f18" 4 0
+"f17" 4 0
+"f16" 4 0
+"f15" 4 0
+"f13" 4 0
+"l3" 4 0
+"l4" 4 0
+"l5" 4 0
+"j3" 4 0
+"j2" 4 0
+"k3" 4 0
+"i3" 4 0
+"g3" 4 0
+"h3" 4 0
+"f3" 4 0
+"d3" 4 0
+"d19" 4 0
+"d17" 4 0
+"d5" 4 0
+"d4" 4 0
+"d7" 4 0
+"h5" 4 0
+"h4" 4 0
+"i4" 4 0
+"j4" 4 0
+"k5" 4 0
+"j5" 4 0
+"i5" 4 0
+"d18" 4 0
+"d10" 4 0
+"g13" 4 0
+"g14" 4 0
+"k4" 4 0
+"d8" 4 0
+"d9" 4 0
+"g16" 4 0
+"g17" 4 0
+"g18" 4 0
+"d11" 4 0
+"g19" 4 0
+"h19" 4 0
+"h18" 4 0
+"h16" 4 0
+"h17" 4 0
+"i16" 4 0
+"i17" 4 0
+"i18" 4 0
+"j19" 4 0
+"j18" 4 0
+"j17" 4 0
+"i19" 4 0
+"j16" 4 0
+"k16" 4 0
+"k17" 4 0
+"k18" 4 0
+"k19" 4 0
+"l19" 4 0
+"f5" 4 0
+"f4" 4 0
+"l18" 4 0
+"l17" 4 0
+"l16" 4 0
+"m16" 4 0
+"m17" 4 0
+"m18" 4 0
+"n19" 4 0
+"m19" 4 0
+"n18" 4 0
+"n17" 4 0
+"n16" 4 0
+"n15" 4 0
+"n10" 4 0
+"n9" 4 0
+"n8" 4 0
+"n7" 4 0
+"n6" 4 0
+"n5" 4 0
+"n4" 4 0
+"n3" 4 0
+"m9" 4 0
+"s2" 4 0
+"s3" 4 0
+"s4" 4 0
+"s5" 4 0
+"s6" 4 0
+"s7" 4 0
+"s8" 4 0
+"s9" 4 0
+"s10" 4 0
+"s11" 4 0
+"s12" 4 0
+"s13" 4 0
+"s14" 4 0
+"s15" 4 0
+"s16" 4 0
+"s17" 4 0
+"s18" 4 0
+"s19" 4 0
+"q19" 4 0
+"o19" 4 0
+"o18" 4 0
+"o17" 4 0
+"o16" 4 0
+"o15" 4 0
+"o14" 4 0
+"o13" 4 0
+"o12" 4 0
+"o11" 4 0
+"o10" 4 0
+"o9" 4 0
+"o8" 4 0
+"o7" 4 0
+"o6" 4 0
+"o5" 4 0
+"o4" 4 0
+"o3" 4 0
+"q8" 4 0
+"q15" 4 0
+"q16" 4 0
+"q17" 4 0
+"q18" 4 0
+"q3" 4 0
+"q4" 4 0
+"q6" 4 0
+"q7" 4 0
+"q5" 4 0
+"q9" 4 0
+"q10" 4 0
+"q11" 4 0
+"q12" 4 0
+"q13" 4 0
+"q14" 4 0
+"b14" 4 0
+"b13" 4 0
+"d13" 4 0
+"d14" 4 0
+"d15" 4 0
+"b15" 4 0
+"b16" 4 0
+"d16" 4 0
+"b17" 4 0
+"b18" 4 0
+"b19" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"k2" 4 0
+"l2" 4 0
+"n2" 4 0
+"o2" 4 0
+"q2" 4 0
+"f14" 4 0
+"b12" 4 0
+"b11" 4 0
+"b10" 4 0
+"b9" 4 0
+"b8" 4 0
+"b7" 4 0
+"b6" 4 0
+"b5" 4 0
+"b4" 4 0
+"b3" 4 0
+"d2" 4 0
index eb47650b3ffaae5b7eb8d6bc1d49510728dfeebe..38f0560db0b515ef40c6452a5977599757d8ae3c 100644 (file)
 // bulldozer storage "level10" last updated 11-06-2016 14:57:48
 nextlevel = "level11"
-"e13" 4 "0 -1 0"
-"d13" 4 "0 -1 0"
-"c13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"c10" 10 "0 -1 0"
-"c12" 4 "0 -1 0"
-"e12" 4 "0 -1 0"
-"e14" 10 "0 -1 0"
-"g12" 4 "0 -1 0"
-"j14" 5 "0 -1 0"
-"k13" 2 "0 -1 0"
-"k12" 2 "0 -1 0"
-"l12" 2 "0 -1 0"
-"l13" 2 "0 -1 0"
-"k11" 5 "0 -1 0"
-"k14" 5 "0 -1 0"
-"o12" 4 "0 -1 0"
-"r8" 10 "0 -1 0"
-"q12" 4 "0 -1 0"
-"r12" 10 "0 -1 0"
-"s12" 4 "0 -1 0"
-"s10" 10 "0 -1 0"
-"t11" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"q11" 4 "0 -1 0"
-"p11" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"k15" 5 "0 -1 0"
-"m11" 1 "0 -1 0"
-"j12" 3 "0 -1 0"
-"j11" 3 "0 -1 0"
-"j10" 3 "0 -1 0"
-"l14" 3 "0 -1 0"
-"k16" 5 "0 -1 0"
-"g11" 4 "0 -1 0"
-"f11" 4 "0 -1 0"
-"e11" 4 "0 -1 0"
-"d11" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"a11" 4 "0 -1 0"
-"a10" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"e10" 10 "0 -1 0"
-"d10" 4 "0 -1 0"
-"d12" 10 "0 -1 0"
-"f10" 4 "0 -1 0"
-"g10" 4 "0 -1 0"
-"l16" 5 "0 -1 0"
-"t12" 10 "0 -1 0"
-"s14" 10 "0 -1 0"
-"r16" 10 "0 -1 0"
-"q14" 10 "0 -1 0"
-"p12" 10 "0 -1 0"
-"m16" 5 "0 -1 0"
-"o10" 4 "0 -1 0"
-"q10" 10 "0 -1 0"
-"p10" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"f12" 10 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"q9" 4 "0 -1 0"
-"p9" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"n16" 5 "0 -1 0"
-"n15" 5 "0 -1 0"
-"n14" 5 "0 -1 0"
-"d16" 10 "0 -1 0"
-"c14" 10 "0 -1 0"
-"b12" 10 "0 -1 0"
-"n13" 5 "0 -1 0"
-"g9" 4 "0 -1 0"
-"f9" 4 "0 -1 0"
-"e9" 4 "0 -1 0"
-"d9" 4 "0 -1 0"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"a9" 4 "0 -1 0"
-"a8" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"c8" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"g8" 4 "0 -1 0"
-"n12" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"m8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"d8" 10 "0 -1 0"
-"s8" 4 "0 -1 0"
-"t8" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"a7" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"q13" 4 "0 -1 0"
-"p13" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"l9" 5 "0 -1 0"
-"l8" 5 "0 -1 0"
-"k8" 5 "0 -1 0"
-"j8" 5 "0 -1 0"
-"g13" 4 "0 -1 0"
-"f13" 4 "0 -1 0"
-"f14" 4 "0 -1 0"
-"d14" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"d15" 4 "0 -1 0"
-"e15" 4 "0 -1 0"
-"f15" 4 "0 -1 0"
-"g15" 4 "0 -1 0"
-"h15" 4 "0 -1 0"
-"i15" 4 "0 -1 0"
-"j15" 4 "0 -1 0"
-"i8" 5 "0 -1 0"
-"h8" 5 "0 -1 0"
-"o15" 4 "0 -1 0"
-"p15" 4 "0 -1 0"
-"q15" 4 "0 -1 0"
-"r15" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"o14" 4 "0 -1 0"
-"h9" 5 "0 -1 0"
-"h10" 5 "0 -1 0"
-"h11" 5 "0 -1 0"
-"i14" 4 "0 -1 0"
-"h14" 4 "0 -1 0"
-"g14" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"q16" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"h12" 5 "0 -1 0"
-"h13" 5 "0 -1 0"
-"i13" 5 "0 -1 0"
-"j13" 5 "0 -1 0"
-"j16" 4 "0 -1 0"
-"i16" 4 "0 -1 0"
-"h16" 4 "0 -1 0"
-"g16" 4 "0 -1 0"
-"f16" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
+"e13" 4 0
+"d13" 4 0
+"c13" 4 0
+"b13" 4 0
+"a13" 4 0
+"a12" 4 0
+"c10" 10 0
+"c12" 4 0
+"e12" 4 0
+"e14" 10 0
+"g12" 4 0
+"j14" 5 0
+"k13" 2 0
+"k12" 2 0
+"l12" 2 0
+"l13" 2 0
+"k11" 5 0
+"k14" 5 0
+"o12" 4 0
+"r8" 10 0
+"q12" 4 0
+"r12" 10 0
+"s12" 4 0
+"s10" 10 0
+"t11" 4 0
+"s11" 4 0
+"r11" 4 0
+"q11" 4 0
+"p11" 4 0
+"o11" 4 0
+"k15" 5 0
+"m11" 1 1
+"j12" 3 0
+"j11" 3 0
+"j10" 3 0
+"l14" 3 0
+"k16" 5 0
+"g11" 4 0
+"f11" 4 0
+"e11" 4 0
+"d11" 4 0
+"c11" 4 0
+"b11" 4 0
+"a11" 4 0
+"a10" 4 0
+"b10" 4 0
+"e10" 10 0
+"d10" 4 0
+"d12" 10 0
+"f10" 4 0
+"g10" 4 0
+"l16" 5 0
+"t12" 10 0
+"s14" 10 0
+"r16" 10 0
+"q14" 10 0
+"p12" 10 0
+"m16" 5 0
+"o10" 4 0
+"q10" 10 0
+"p10" 4 0
+"r10" 4 0
+"f12" 10 0
+"t10" 4 0
+"t9" 4 0
+"s9" 4 0
+"r9" 4 0
+"q9" 4 0
+"p9" 4 0
+"o9" 4 0
+"n16" 5 0
+"n15" 5 0
+"n14" 5 0
+"d16" 10 0
+"c14" 10 0
+"b12" 10 0
+"n13" 5 0
+"g9" 4 0
+"f9" 4 0
+"e9" 4 0
+"d9" 4 0
+"c9" 4 0
+"b9" 4 0
+"a9" 4 0
+"a8" 4 0
+"b8" 4 0
+"c8" 4 0
+"e8" 4 0
+"f8" 4 0
+"g8" 4 0
+"n12" 5 0
+"n11" 5 0
+"n10" 5 0
+"n9" 5 0
+"m9" 5 0
+"m8" 4 0
+"n8" 4 0
+"o8" 4 0
+"p8" 4 0
+"q8" 4 0
+"d8" 10 0
+"s8" 4 0
+"t8" 4 0
+"t7" 4 0
+"s7" 4 0
+"r7" 4 0
+"q7" 4 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"m7" 4 0
+"l7" 4 0
+"k7" 4 0
+"j7" 4 0
+"i7" 4 0
+"h7" 4 0
+"g7" 4 0
+"f7" 4 0
+"e7" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"a7" 4 0
+"a6" 4 0
+"b6" 4 0
+"c6" 4 0
+"d6" 4 0
+"e6" 4 0
+"f6" 4 0
+"g6" 4 0
+"h6" 4 0
+"i6" 4 0
+"j6" 4 0
+"k6" 4 0
+"l6" 4 0
+"m6" 4 0
+"n6" 4 0
+"o6" 4 0
+"p6" 4 0
+"q6" 4 0
+"r6" 4 0
+"s6" 4 0
+"t6" 4 0
+"t5" 4 0
+"s5" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"l5" 4 0
+"k5" 4 0
+"j5" 4 0
+"i5" 4 0
+"h5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"c5" 4 0
+"b5" 4 0
+"a5" 4 0
+"a4" 4 0
+"b4" 4 0
+"c4" 4 0
+"d4" 4 0
+"e4" 4 0
+"f4" 4 0
+"g4" 4 0
+"h4" 4 0
+"i4" 4 0
+"j4" 4 0
+"k4" 4 0
+"l4" 4 0
+"m4" 4 0
+"n4" 4 0
+"o4" 4 0
+"p4" 4 0
+"q4" 4 0
+"r4" 4 0
+"s4" 4 0
+"t4" 4 0
+"t3" 4 0
+"s3" 4 0
+"r3" 4 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"k3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"g3" 4 0
+"f3" 4 0
+"e3" 4 0
+"d3" 4 0
+"c3" 4 0
+"b3" 4 0
+"a3" 4 0
+"a2" 4 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"t2" 4 0
+"t1" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"a1" 4 0
+"t13" 4 0
+"s13" 4 0
+"r13" 4 0
+"q13" 4 0
+"p13" 4 0
+"o13" 4 0
+"l9" 5 0
+"l8" 5 0
+"k8" 5 0
+"j8" 5 0
+"g13" 4 0
+"f13" 4 0
+"f14" 4 0
+"d14" 4 0
+"b14" 4 0
+"a14" 4 0
+"a15" 4 0
+"b15" 4 0
+"c15" 4 0
+"d15" 4 0
+"e15" 4 0
+"f15" 4 0
+"g15" 4 0
+"h15" 4 0
+"i15" 4 0
+"j15" 4 0
+"i8" 5 0
+"h8" 5 0
+"o15" 4 0
+"p15" 4 0
+"q15" 4 0
+"r15" 4 0
+"s15" 4 0
+"t15" 4 0
+"t14" 4 0
+"r14" 4 0
+"p14" 4 0
+"o14" 4 0
+"h9" 5 0
+"h10" 5 0
+"h11" 5 0
+"i14" 4 0
+"h14" 4 0
+"g14" 4 0
+"t16" 4 0
+"s16" 4 0
+"q16" 4 0
+"p16" 4 0
+"o16" 4 0
+"h12" 5 0
+"h13" 5 0
+"i13" 5 0
+"j13" 5 0
+"j16" 4 0
+"i16" 4 0
+"h16" 4 0
+"g16" 4 0
+"f16" 4 0
+"e16" 4 0
+"c16" 4 0
+"b16" 4 0
+"a16" 4 0
+"a17" 4 0
+"b17" 4 0
+"c17" 4 0
+"d17" 4 0
+"e17" 4 0
+"f17" 4 0
+"g17" 4 0
+"h17" 4 0
+"i17" 4 0
+"j17" 4 0
+"k17" 4 0
+"l17" 4 0
+"m17" 4 0
+"n17" 4 0
+"o17" 4 0
+"p17" 4 0
+"q17" 4 0
+"r17" 4 0
+"s17" 4 0
+"t17" 4 0
+"t18" 4 0
+"s18" 4 0
+"r18" 4 0
+"q18" 4 0
+"p18" 4 0
+"o18" 4 0
+"n18" 4 0
+"m18" 4 0
+"l18" 4 0
+"k18" 4 0
+"j18" 4 0
+"i18" 4 0
+"h18" 4 0
+"g18" 4 0
+"f18" 4 0
+"e18" 4 0
+"d18" 4 0
+"c18" 4 0
+"b18" 4 0
+"a18" 4 0
+"a19" 4 0
+"b19" 4 0
+"c19" 4 0
+"d19" 4 0
+"e19" 4 0
+"f19" 4 0
+"g19" 4 0
+"h19" 4 0
+"i19" 4 0
+"j19" 4 0
+"k19" 4 0
+"l19" 4 0
+"m19" 4 0
+"n19" 4 0
+"o19" 4 0
+"p19" 4 0
+"q19" 4 0
+"r19" 4 0
+"s19" 4 0
+"t19" 4 0
+"t20" 4 0
+"s20" 4 0
+"r20" 4 0
+"q20" 4 0
+"p20" 4 0
+"o20" 4 0
+"n20" 4 0
+"m20" 4 0
+"l20" 4 0
+"k20" 4 0
+"j20" 4 0
+"i20" 4 0
+"h20" 4 0
+"g20" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"a20" 4 0
index 5cb54623551f4c4c13848b9ae960bd05296301d2..e8ecfcaf5064a3125c95f72b42b7946ea713235a 100644 (file)
 // bulldozer storage "level11" last updated 11-06-2016 15:03:24
 nextlevel = "level12"
-"e6" 5 "0 -1 0"
-"f6" 5 "0 -1 0"
-"g6" 5 "0 -1 0"
-"h6" 5 "0 -1 0"
-"i6" 5 "0 -1 0"
-"j6" 5 "0 -1 0"
-"k6" 5 "0 -1 0"
-"l6" 5 "0 -1 0"
-"m6" 5 "0 -1 0"
-"n6" 5 "0 -1 0"
-"o6" 5 "0 -1 0"
-"p6" 5 "0 -1 0"
-"e7" 5 "0 -1 0"
-"e8" 5 "0 -1 0"
-"e9" 5 "0 -1 0"
-"d9" 5 "0 -1 0"
-"d10" 5 "0 -1 0"
-"d11" 5 "0 -1 0"
-"d12" 5 "0 -1 0"
-"d13" 5 "0 -1 0"
-"d14" 5 "0 -1 0"
-"d15" 5 "0 -1 0"
-"e15" 5 "0 -1 0"
-"f15" 5 "0 -1 0"
-"g15" 5 "0 -1 0"
-"h16" 5 "0 -1 0"
-"g16" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"j16" 5 "0 -1 0"
-"k16" 5 "0 -1 0"
-"l16" 5 "0 -1 0"
-"m16" 5 "0 -1 0"
-"m15" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"m13" 5 "0 -1 0"
-"n13" 5 "0 -1 0"
-"n12" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"o9" 5 "0 -1 0"
-"p9" 5 "0 -1 0"
-"p8" 5 "0 -1 0"
-"p7" 5 "0 -1 0"
-"a20" 10 "0 -1 0"
-"a19" 10 "0 -1 0"
-"a18" 10 "0 -1 0"
-"a17" 10 "0 -1 0"
-"a16" 10 "0 -1 0"
-"a15" 10 "0 -1 0"
-"a14" 10 "0 -1 0"
-"a13" 10 "0 -1 0"
-"a12" 10 "0 -1 0"
-"a11" 10 "0 -1 0"
-"a10" 10 "0 -1 0"
-"a9" 10 "0 -1 0"
-"a8" 10 "0 -1 0"
-"a7" 10 "0 -1 0"
-"a6" 10 "0 -1 0"
-"a5" 10 "0 -1 0"
-"a4" 10 "0 -1 0"
-"a3" 10 "0 -1 0"
-"a2" 10 "0 -1 0"
-"a1" 10 "0 -1 0"
-"t20" 10 "0 -1 0"
-"t19" 10 "0 -1 0"
-"t18" 10 "0 -1 0"
-"t17" 10 "0 -1 0"
-"t16" 10 "0 -1 0"
-"t15" 10 "0 -1 0"
-"t14" 10 "0 -1 0"
-"t12" 10 "0 -1 0"
-"t11" 10 "0 -1 0"
-"t10" 10 "0 -1 0"
-"t9" 10 "0 -1 0"
-"t8" 10 "0 -1 0"
-"t7" 10 "0 -1 0"
-"t6" 10 "0 -1 0"
-"t5" 10 "0 -1 0"
-"t4" 10 "0 -1 0"
-"t3" 10 "0 -1 0"
-"t2" 10 "0 -1 0"
-"t1" 10 "0 -1 0"
-"t13" 10 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"q9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"q10" 4 "0 -1 0"
-"p10" 4 "0 -1 0"
-"o10" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"p11" 4 "0 -1 0"
-"q11" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"q12" 4 "0 -1 0"
-"p12" 4 "0 -1 0"
-"o12" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"p13" 4 "0 -1 0"
-"q13" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"s14" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"q14" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"o14" 4 "0 -1 0"
-"n14" 4 "0 -1 0"
-"n15" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"p15" 4 "0 -1 0"
-"q15" 4 "0 -1 0"
-"r15" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"q16" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"d16" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"f16" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"c14" 4 "0 -1 0"
-"c13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"b12" 4 "0 -1 0"
-"c12" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"c10" 4 "0 -1 0"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"c8" 4 "0 -1 0"
-"d8" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"f13" 5 "0 -1 0"
-"f12" 5 "0 -1 0"
-"f11" 5 "0 -1 0"
-"g10" 5 "0 -1 0"
-"h13" 5 "0 -1 0"
-"i14" 5 "0 -1 0"
-"j14" 5 "0 -1 0"
-"k14" 5 "0 -1 0"
-"k12" 5 "0 -1 0"
-"l11" 5 "0 -1 0"
-"l10" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"l7" 5 "0 -1 0"
-"k7" 5 "0 -1 0"
-"g8" 5 "0 -1 0"
-"i8" 5 "0 -1 0"
-"h8" 5 "0 -1 0"
-"j9" 5 "0 -1 0"
-"l8" 1 "0 -1 0"
-"j8" 2 "0 -1 0"
-"i11" 2 "0 -1 0"
-"f10" 2 "0 -1 0"
-"h14" 2 "0 -1 0"
-"l12" 2 "0 -1 0"
-"h10" 3 "0 -1 0"
-"i11" 3 "0 -1 0"
-"h12" 3 "0 -1 0"
-"j12" 3 "0 -1 0"
-"j10" 3 "0 -1 0"
+"e6" 5 0
+"f6" 5 0
+"g6" 5 0
+"h6" 5 0
+"i6" 5 0
+"j6" 5 0
+"k6" 5 0
+"l6" 5 0
+"m6" 5 0
+"n6" 5 0
+"o6" 5 0
+"p6" 5 0
+"e7" 5 0
+"e8" 5 0
+"e9" 5 0
+"d9" 5 0
+"d10" 5 0
+"d11" 5 0
+"d12" 5 0
+"d13" 5 0
+"d14" 5 0
+"d15" 5 0
+"e15" 5 0
+"f15" 5 0
+"g15" 5 0
+"h16" 5 0
+"g16" 5 0
+"i16" 5 0
+"j16" 5 0
+"k16" 5 0
+"l16" 5 0
+"m16" 5 0
+"m15" 5 0
+"m14" 5 0
+"m13" 5 0
+"n13" 5 0
+"n12" 5 0
+"n11" 5 0
+"n10" 5 0
+"n9" 5 0
+"o9" 5 0
+"p9" 5 0
+"p8" 5 0
+"p7" 5 0
+"a20" 10 0
+"a19" 10 0
+"a18" 10 0
+"a17" 10 0
+"a16" 10 0
+"a15" 10 0
+"a14" 10 0
+"a13" 10 0
+"a12" 10 0
+"a11" 10 0
+"a10" 10 0
+"a9" 10 0
+"a8" 10 0
+"a7" 10 0
+"a6" 10 0
+"a5" 10 0
+"a4" 10 0
+"a3" 10 0
+"a2" 10 0
+"a1" 10 0
+"t20" 10 0
+"t19" 10 0
+"t18" 10 0
+"t17" 10 0
+"t16" 10 0
+"t15" 10 0
+"t14" 10 0
+"t12" 10 0
+"t11" 10 0
+"t10" 10 0
+"t9" 10 0
+"t8" 10 0
+"t7" 10 0
+"t6" 10 0
+"t5" 10 0
+"t4" 10 0
+"t3" 10 0
+"t2" 10 0
+"t1" 10 0
+"t13" 10 0
+"e3" 4 0
+"d3" 4 0
+"c3" 4 0
+"b3" 4 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"s3" 4 0
+"r3" 4 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"k3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"g3" 4 0
+"f3" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"b4" 4 0
+"b5" 4 0
+"c5" 4 0
+"d5" 4 0
+"e5" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"p5" 4 0
+"q5" 4 0
+"r5" 4 0
+"s5" 4 0
+"s4" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"s6" 4 0
+"r6" 4 0
+"q6" 4 0
+"q7" 4 0
+"r7" 4 0
+"s7" 4 0
+"s8" 4 0
+"r8" 4 0
+"q8" 4 0
+"q9" 4 0
+"r9" 4 0
+"s9" 4 0
+"s10" 4 0
+"r10" 4 0
+"q10" 4 0
+"p10" 4 0
+"o10" 4 0
+"o11" 4 0
+"p11" 4 0
+"q11" 4 0
+"r11" 4 0
+"s11" 4 0
+"s12" 4 0
+"r12" 4 0
+"q12" 4 0
+"p12" 4 0
+"o12" 4 0
+"o13" 4 0
+"p13" 4 0
+"q13" 4 0
+"r13" 4 0
+"s13" 4 0
+"s14" 4 0
+"r14" 4 0
+"q14" 4 0
+"p14" 4 0
+"o14" 4 0
+"n14" 4 0
+"n15" 4 0
+"o15" 4 0
+"p15" 4 0
+"q15" 4 0
+"r15" 4 0
+"s15" 4 0
+"s16" 4 0
+"r16" 4 0
+"q16" 4 0
+"p16" 4 0
+"o16" 4 0
+"n16" 4 0
+"n17" 4 0
+"m17" 4 0
+"l17" 4 0
+"k17" 4 0
+"j17" 4 0
+"i17" 4 0
+"h17" 4 0
+"g17" 4 0
+"f17" 4 0
+"e17" 4 0
+"d17" 4 0
+"c17" 4 0
+"b17" 4 0
+"b16" 4 0
+"c16" 4 0
+"d16" 4 0
+"e16" 4 0
+"f16" 4 0
+"c15" 4 0
+"b15" 4 0
+"b14" 4 0
+"c14" 4 0
+"c13" 4 0
+"b13" 4 0
+"b12" 4 0
+"c12" 4 0
+"c11" 4 0
+"b11" 4 0
+"b10" 4 0
+"c10" 4 0
+"c9" 4 0
+"b9" 4 0
+"b8" 4 0
+"c8" 4 0
+"d8" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"b6" 4 0
+"c6" 4 0
+"d6" 4 0
+"b18" 4 0
+"c18" 4 0
+"d18" 4 0
+"e18" 4 0
+"f18" 4 0
+"g18" 4 0
+"h18" 4 0
+"i18" 4 0
+"j18" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"s18" 4 0
+"s17" 4 0
+"r17" 4 0
+"q17" 4 0
+"p17" 4 0
+"o17" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"b19" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"f20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"f13" 5 0
+"f12" 5 0
+"f11" 5 0
+"g10" 5 0
+"h13" 5 0
+"i14" 5 0
+"j14" 5 0
+"k14" 5 0
+"k12" 5 0
+"l11" 5 0
+"l10" 5 0
+"l9" 5 0
+"l7" 5 0
+"k7" 5 0
+"g8" 5 0
+"i8" 5 0
+"h8" 5 0
+"j9" 5 0
+"l8" 1 1
+"j8" 2 0
+"i11" 2 0
+"f10" 2 0
+"h14" 2 0
+"l12" 2 0
+"h10" 3 0
+"i11" 3 0
+"h12" 3 0
+"j12" 3 0
+"j10" 3 0
index f7162fb0460d92c8d2b5e610fdf7f8d3e1e09fd8..ccd163583bc72a8a43153667d1f22fa9b4da4cc2 100644 (file)
 // bulldozer storage "level12" last updated 11-06-2016 15:11:43
 nextlevel = "level13"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"t7" 11 "0 -1 0"
-"t17" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"t12" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"a18" 11 "0 -1 0"
-"a17" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"a11" 4 "0 -1 0"
-"a10" 4 "0 -1 0"
-"a9" 4 "0 -1 0"
-"a8" 4 "0 -1 0"
-"d17" 5 "0 -1 0"
-"t8" 4 "0 -1 0"
-"a7" 11 "0 -1 0"
-"s7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"t18" 11 "0 -1 0"
-"d16" 5 "0 -1 0"
-"e13" 5 "0 -1 0"
-"d15" 5 "0 -1 0"
-"d14" 5 "0 -1 0"
-"d13" 5 "0 -1 0"
-"e12" 5 "0 -1 0"
-"g11" 5 "0 -1 0"
-"e11" 5 "0 -1 0"
-"g12" 5 "0 -1 0"
-"g13" 5 "0 -1 0"
-"g14" 5 "0 -1 0"
-"h14" 5 "0 -1 0"
-"i14" 5 "0 -1 0"
-"i13" 5 "0 -1 0"
-"i12" 5 "0 -1 0"
-"i11" 5 "0 -1 0"
-"g10" 5 "0 -1 0"
-"i10" 5 "0 -1 0"
-"h10" 5 "0 -1 0"
-"h11" 10 "0 -1 0"
-"h12" 10 "0 -1 0"
-"h13" 10 "0 -1 0"
-"d8" 5 "0 -1 0"
-"d9" 5 "0 -1 0"
-"e17" 5 "0 -1 0"
-"f17" 5 "0 -1 0"
-"g17" 5 "0 -1 0"
-"h17" 5 "0 -1 0"
-"i17" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"m17" 5 "0 -1 0"
-"n17" 5 "0 -1 0"
-"o17" 5 "0 -1 0"
-"l15" 5 "0 -1 0"
-"m15" 5 "0 -1 0"
-"o15" 5 "0 -1 0"
-"n15" 5 "0 -1 0"
-"p15" 5 "0 -1 0"
-"p14" 5 "0 -1 0"
-"q14" 5 "0 -1 0"
-"r14" 5 "0 -1 0"
-"s14" 8 "0 -1 0"
-"r13" 8 "0 -1 0"
-"q12" 8 "0 -1 0"
-"p11" 8 "0 -1 0"
-"o10" 8 "0 -1 0"
-"n9" 8 "0 -1 0"
-"m8" 8 "0 -1 0"
-"m9" 5 "0 -1 0"
-"m11" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"m13" 5 "0 -1 0"
-"q9" 4 "0 -1 0"
-"p9" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"q10" 4 "0 -1 0"
-"p10" 4 "0 -1 0"
-"q11" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"f15" 1 "0 -1 0"
-"q16" 2 "0 -1 0"
-"q15" 2 "0 -1 0"
-"r15" 2 "0 -1 0"
-"r16" 2 "0 -1 0"
-"s16" 2 "0 -1 0"
-"s15" 2 "0 -1 0"
-"s17" 2 "0 -1 0"
-"b9" 2 "0 -1 0"
-"c8" 2 "0 -1 0"
-"n10" 2 "0 -1 0"
-"o11" 2 "0 -1 0"
-"p12" 2 "0 -1 0"
-"q13" 2 "0 -1 0"
-"c15" 3 "0 -1 0"
-"b11" 3 "0 -1 0"
-"c13" 3 "0 -1 0"
-"d11" 3 "0 -1 0"
-"c9" 3 "0 -1 0"
-"j16" 3 "0 -1 0"
-"j14" 3 "0 -1 0"
-"k13" 3 "0 -1 0"
-"j12" 3 "0 -1 0"
-"k11" 3 "0 -1 0"
-"j10" 3 "0 -1 0"
-"n16" 3 "0 -1 0"
-"o13" 3 "0 -1 0"
+"b18" 4 0
+"c18" 4 0
+"d18" 4 0
+"e18" 4 0
+"f18" 4 0
+"g18" 4 0
+"h18" 4 0
+"i18" 4 0
+"j18" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"s18" 4 0
+"t7" 11 0
+"t17" 4 0
+"t16" 4 0
+"t15" 4 0
+"t14" 4 0
+"t13" 4 0
+"t12" 4 0
+"t11" 4 0
+"t10" 4 0
+"t9" 4 0
+"b7" 4 0
+"c7" 4 0
+"a18" 11 0
+"a17" 4 0
+"a16" 4 0
+"a15" 4 0
+"a14" 4 0
+"a13" 4 0
+"a12" 4 0
+"a11" 4 0
+"a10" 4 0
+"a9" 4 0
+"a8" 4 0
+"d17" 5 0
+"t8" 4 0
+"a7" 11 0
+"s7" 4 0
+"r7" 4 0
+"q7" 4 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"l7" 4 0
+"k7" 4 0
+"j7" 4 0
+"i7" 4 0
+"h7" 4 0
+"g7" 4 0
+"f7" 4 0
+"e7" 4 0
+"d7" 4 0
+"m7" 4 0
+"c5" 4 0
+"b5" 4 0
+"a5" 4 0
+"a4" 4 0
+"b4" 4 0
+"c4" 4 0
+"d4" 4 0
+"e4" 4 0
+"f4" 4 0
+"g4" 4 0
+"h4" 4 0
+"i4" 4 0
+"j4" 4 0
+"k4" 4 0
+"l4" 4 0
+"m4" 4 0
+"n4" 4 0
+"o4" 4 0
+"p4" 4 0
+"q4" 4 0
+"r4" 4 0
+"s4" 4 0
+"t4" 4 0
+"t3" 4 0
+"s3" 4 0
+"r3" 4 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"k3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"g3" 4 0
+"f3" 4 0
+"e3" 4 0
+"d3" 4 0
+"c3" 4 0
+"b3" 4 0
+"a3" 4 0
+"a2" 4 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"t2" 4 0
+"t1" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"a1" 4 0
+"t5" 4 0
+"s5" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"l5" 4 0
+"k5" 4 0
+"j5" 4 0
+"i5" 4 0
+"h5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"d6" 4 0
+"c6" 4 0
+"b6" 4 0
+"a6" 4 0
+"e6" 4 0
+"f6" 4 0
+"g6" 4 0
+"h6" 4 0
+"i6" 4 0
+"j6" 4 0
+"k6" 4 0
+"l6" 4 0
+"m6" 4 0
+"n6" 4 0
+"o6" 4 0
+"p6" 4 0
+"q6" 4 0
+"r6" 4 0
+"s6" 4 0
+"t6" 4 0
+"b19" 4 0
+"a19" 4 0
+"a20" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"f20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"t20" 4 0
+"t19" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"t18" 11 0
+"d16" 5 0
+"e13" 5 0
+"d15" 5 0
+"d14" 5 0
+"d13" 5 0
+"e12" 5 0
+"g11" 5 0
+"e11" 5 0
+"g12" 5 0
+"g13" 5 0
+"g14" 5 0
+"h14" 5 0
+"i14" 5 0
+"i13" 5 0
+"i12" 5 0
+"i11" 5 0
+"g10" 5 0
+"i10" 5 0
+"h10" 5 0
+"h11" 10 0
+"h12" 10 0
+"h13" 10 0
+"d8" 5 0
+"d9" 5 0
+"e17" 5 0
+"f17" 5 0
+"g17" 5 0
+"h17" 5 0
+"i17" 5 0
+"i16" 5 0
+"m17" 5 0
+"n17" 5 0
+"o17" 5 0
+"l15" 5 0
+"m15" 5 0
+"o15" 5 0
+"n15" 5 0
+"p15" 5 0
+"p14" 5 0
+"q14" 5 0
+"r14" 5 0
+"s14" 8 0
+"r13" 8 0
+"q12" 8 0
+"p11" 8 0
+"o10" 8 0
+"n9" 8 0
+"m8" 8 0
+"m9" 5 0
+"m11" 5 0
+"m14" 5 0
+"m13" 5 0
+"q9" 4 0
+"p9" 4 0
+"o9" 4 0
+"o8" 4 0
+"n8" 4 0
+"p8" 4 0
+"q8" 4 0
+"r8" 4 0
+"s8" 4 0
+"s9" 4 0
+"r9" 4 0
+"r10" 4 0
+"q10" 4 0
+"p10" 4 0
+"q11" 4 0
+"r11" 4 0
+"s11" 4 0
+"s10" 4 0
+"s12" 4 0
+"r12" 4 0
+"s13" 4 0
+"f15" 1 1
+"q16" 2 0
+"q15" 2 0
+"r15" 2 0
+"r16" 2 0
+"s16" 2 0
+"s15" 2 0
+"s17" 2 0
+"b9" 2 0
+"c8" 2 0
+"n10" 2 0
+"o11" 2 0
+"p12" 2 0
+"q13" 2 0
+"c15" 3 0
+"b11" 3 0
+"c13" 3 0
+"d11" 3 0
+"c9" 3 0
+"j16" 3 0
+"j14" 3 0
+"k13" 3 0
+"j12" 3 0
+"k11" 3 0
+"j10" 3 0
+"n16" 3 0
+"o13" 3 0
index 54f74994960021de466fd227dda29fd787178aff..c5e7f38c470e5a72d87df1d5bfe8dd0dbb8f2c30 100644 (file)
 // bulldozer storage "level13" last updated 11-06-2016 15:20:23
 nextlevel = "level14"
-"a10" 5 "0 -1 0"
-"a8" 5 "0 -1 0"
-"a9" 5 "0 -1 0"
-"a11" 5 "0 -1 0"
-"b11" 5 "0 -1 0"
-"d13" 5 "0 -1 0"
-"c11" 5 "0 -1 0"
-"c12" 5 "0 -1 0"
-"c13" 5 "0 -1 0"
-"e13" 5 "0 -1 0"
-"e14" 5 "0 -1 0"
-"e15" 5 "0 -1 0"
-"e16" 5 "0 -1 0"
-"f16" 5 "0 -1 0"
-"g16" 5 "0 -1 0"
-"h16" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"i15" 5 "0 -1 0"
-"i14" 5 "0 -1 0"
-"i13" 5 "0 -1 0"
-"j13" 5 "0 -1 0"
-"j12" 5 "0 -1 0"
-"j11" 5 "0 -1 0"
-"j10" 5 "0 -1 0"
-"k10" 5 "0 -1 0"
-"l10" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"m10" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"o11" 5 "0 -1 0"
-"p11" 5 "0 -1 0"
-"q11" 5 "0 -1 0"
-"r11" 5 "0 -1 0"
-"s11" 5 "0 -1 0"
-"s10" 5 "0 -1 0"
-"s8" 5 "0 -1 0"
-"s9" 5 "0 -1 0"
-"s7" 5 "0 -1 0"
-"r7" 5 "0 -1 0"
-"q7" 5 "0 -1 0"
-"p7" 5 "0 -1 0"
-"o7" 5 "0 -1 0"
-"n7" 5 "0 -1 0"
-"m7" 5 "0 -1 0"
-"l7" 5 "0 -1 0"
-"k7" 5 "0 -1 0"
-"k8" 5 "0 -1 0"
-"m8" 5 "0 -1 0"
-"n8" 5 "0 -1 0"
-"k6" 5 "0 -1 0"
-"j6" 5 "0 -1 0"
-"i6" 5 "0 -1 0"
-"b8" 5 "0 -1 0"
-"c8" 5 "0 -1 0"
-"d8" 5 "0 -1 0"
-"e8" 5 "0 -1 0"
-"e7" 5 "0 -1 0"
-"e6" 5 "0 -1 0"
-"f6" 5 "0 -1 0"
-"g6" 5 "0 -1 0"
-"h6" 5 "0 -1 0"
-"e11" 8 "0 -1 0"
-"e10" 8 "0 -1 0"
-"g11" 8 "0 -1 0"
-"g10" 8 "0 -1 0"
-"h10" 8 "0 -1 0"
-"h11" 8 "0 -1 0"
-"g8" 8 "0 -1 0"
-"h8" 8 "0 -1 0"
-"i8" 8 "0 -1 0"
-"b15" 8 "0 -1 0"
-"o12" 11 "0 -1 0"
-"n13" 11 "0 -1 0"
-"m14" 11 "0 -1 0"
-"l15" 11 "0 -1 0"
-"k16" 11 "0 -1 0"
-"m16" 11 "0 -1 0"
-"n15" 11 "0 -1 0"
-"o16" 11 "0 -1 0"
-"p15" 11 "0 -1 0"
-"q16" 11 "0 -1 0"
-"r15" 11 "0 -1 0"
-"s16" 11 "0 -1 0"
-"q14" 11 "0 -1 0"
-"p13" 11 "0 -1 0"
-"o14" 11 "0 -1 0"
-"j19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"d16" 4 "0 -1 0"
-"d15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"c14" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"b12" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"d14" 4 "0 -1 0"
-"j16" 4 "0 -1 0"
-"j15" 4 "0 -1 0"
-"k15" 4 "0 -1 0"
-"k14" 4 "0 -1 0"
-"j14" 4 "0 -1 0"
-"l14" 4 "0 -1 0"
-"l13" 4 "0 -1 0"
-"k13" 4 "0 -1 0"
-"k12" 4 "0 -1 0"
-"l12" 4 "0 -1 0"
-"m12" 4 "0 -1 0"
-"n12" 4 "0 -1 0"
-"m11" 4 "0 -1 0"
-"l11" 4 "0 -1 0"
-"k11" 4 "0 -1 0"
-"m13" 4 "0 -1 0"
-"l16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"s14" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"q13" 4 "0 -1 0"
-"q12" 4 "0 -1 0"
-"p12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"t12" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"t8" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"a7" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"m15" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"q15" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"n14" 4 "0 -1 0"
-"l8" 1 "0 -1 0"
-"r10" 2 "0 -1 0"
-"r9" 2 "0 -1 0"
-"r8" 2 "0 -1 0"
-"q8" 2 "0 -1 0"
-"q9" 2 "0 -1 0"
-"q10" 2 "0 -1 0"
-"c9" 3 "0 -1 0"
-"f9" 3 "0 -1 0"
-"f12" 3 "0 -1 0"
-"f14" 3 "0 -1 0"
-"h13" 3 "0 -1 0"
-"h12" 3 "0 -1 0"
+"a10" 5 0
+"a8" 5 0
+"a9" 5 0
+"a11" 5 0
+"b11" 5 0
+"d13" 5 0
+"c11" 5 0
+"c12" 5 0
+"c13" 5 0
+"e13" 5 0
+"e14" 5 0
+"e15" 5 0
+"e16" 5 0
+"f16" 5 0
+"g16" 5 0
+"h16" 5 0
+"i16" 5 0
+"i15" 5 0
+"i14" 5 0
+"i13" 5 0
+"j13" 5 0
+"j12" 5 0
+"j11" 5 0
+"j10" 5 0
+"k10" 5 0
+"l10" 5 0
+"n10" 5 0
+"m10" 5 0
+"n11" 5 0
+"o11" 5 0
+"p11" 5 0
+"q11" 5 0
+"r11" 5 0
+"s11" 5 0
+"s10" 5 0
+"s8" 5 0
+"s9" 5 0
+"s7" 5 0
+"r7" 5 0
+"q7" 5 0
+"p7" 5 0
+"o7" 5 0
+"n7" 5 0
+"m7" 5 0
+"l7" 5 0
+"k7" 5 0
+"k8" 5 0
+"m8" 5 0
+"n8" 5 0
+"k6" 5 0
+"j6" 5 0
+"i6" 5 0
+"b8" 5 0
+"c8" 5 0
+"d8" 5 0
+"e8" 5 0
+"e7" 5 0
+"e6" 5 0
+"f6" 5 0
+"g6" 5 0
+"h6" 5 0
+"e11" 8 0
+"e10" 8 0
+"g11" 8 0
+"g10" 8 0
+"h10" 8 0
+"h11" 8 0
+"g8" 8 0
+"h8" 8 0
+"i8" 8 0
+"b15" 8 0
+"o12" 11 0
+"n13" 11 0
+"m14" 11 0
+"l15" 11 0
+"k16" 11 0
+"m16" 11 0
+"n15" 11 0
+"o16" 11 0
+"p15" 11 0
+"q16" 11 0
+"r15" 11 0
+"s16" 11 0
+"q14" 11 0
+"p13" 11 0
+"o14" 11 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"b19" 4 0
+"a19" 4 0
+"a18" 4 0
+"b18" 4 0
+"c18" 4 0
+"d18" 4 0
+"e18" 4 0
+"f18" 4 0
+"g18" 4 0
+"h18" 4 0
+"i18" 4 0
+"j18" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"s18" 4 0
+"t18" 4 0
+"t17" 4 0
+"s17" 4 0
+"r17" 4 0
+"q17" 4 0
+"p17" 4 0
+"o17" 4 0
+"n17" 4 0
+"m17" 4 0
+"l17" 4 0
+"k17" 4 0
+"j17" 4 0
+"i17" 4 0
+"h17" 4 0
+"g17" 4 0
+"f17" 4 0
+"e17" 4 0
+"d17" 4 0
+"c17" 4 0
+"b17" 4 0
+"a17" 4 0
+"a16" 4 0
+"b16" 4 0
+"c16" 4 0
+"d16" 4 0
+"d15" 4 0
+"c15" 4 0
+"c14" 4 0
+"b14" 4 0
+"a14" 4 0
+"a13" 4 0
+"b13" 4 0
+"b12" 4 0
+"a12" 4 0
+"a15" 4 0
+"d14" 4 0
+"j16" 4 0
+"j15" 4 0
+"k15" 4 0
+"k14" 4 0
+"j14" 4 0
+"l14" 4 0
+"l13" 4 0
+"k13" 4 0
+"k12" 4 0
+"l12" 4 0
+"m12" 4 0
+"n12" 4 0
+"m11" 4 0
+"l11" 4 0
+"k11" 4 0
+"m13" 4 0
+"l16" 4 0
+"n16" 4 0
+"p16" 4 0
+"r16" 4 0
+"t16" 4 0
+"t15" 4 0
+"s15" 4 0
+"s14" 4 0
+"r14" 4 0
+"r13" 4 0
+"q13" 4 0
+"q12" 4 0
+"p12" 4 0
+"r12" 4 0
+"s12" 4 0
+"t12" 4 0
+"t11" 4 0
+"t10" 4 0
+"t9" 4 0
+"t8" 4 0
+"t7" 4 0
+"t6" 4 0
+"s6" 4 0
+"r6" 4 0
+"q6" 4 0
+"p6" 4 0
+"o6" 4 0
+"n6" 4 0
+"m6" 4 0
+"l6" 4 0
+"l5" 4 0
+"k5" 4 0
+"j5" 4 0
+"i5" 4 0
+"h5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"c5" 4 0
+"b5" 4 0
+"a5" 4 0
+"a4" 4 0
+"b4" 4 0
+"c4" 4 0
+"d4" 4 0
+"e4" 4 0
+"f4" 4 0
+"g4" 4 0
+"h4" 4 0
+"i4" 4 0
+"j4" 4 0
+"k4" 4 0
+"l4" 4 0
+"m4" 4 0
+"n4" 4 0
+"o4" 4 0
+"p4" 4 0
+"q4" 4 0
+"r4" 4 0
+"s4" 4 0
+"t4" 4 0
+"t3" 4 0
+"s3" 4 0
+"r3" 4 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"k3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"g3" 4 0
+"f3" 4 0
+"e3" 4 0
+"d3" 4 0
+"c3" 4 0
+"b3" 4 0
+"a3" 4 0
+"a2" 4 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"t2" 4 0
+"t1" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"a1" 4 0
+"t5" 4 0
+"s5" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"a6" 4 0
+"b6" 4 0
+"c6" 4 0
+"d6" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"a7" 4 0
+"t13" 4 0
+"s13" 4 0
+"t14" 4 0
+"t19" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"k20" 4 0
+"j20" 4 0
+"i20" 4 0
+"h20" 4 0
+"g20" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"a20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"t20" 4 0
+"m15" 4 0
+"o15" 4 0
+"q15" 4 0
+"p14" 4 0
+"o13" 4 0
+"n14" 4 0
+"l8" 1 1
+"r10" 2 0
+"r9" 2 0
+"r8" 2 0
+"q8" 2 0
+"q9" 2 0
+"q10" 2 0
+"c9" 3 0
+"f9" 3 0
+"f12" 3 0
+"f14" 3 0
+"h13" 3 0
+"h12" 3 0
index 540c31fe3d856d62bdadba5520fba19ae7931eef..c7ab1e0c2de0ee3cc49f0050e86369553867bc1e 100644 (file)
 // bulldozer storage "level14" last updated 11-06-2016 15:24:43
 nextlevel = "level15"
-"a20" 10 "0 -1 0"
-"a19" 10 "0 -1 0"
-"a18" 10 "0 -1 0"
-"a17" 10 "0 -1 0"
-"a16" 10 "0 -1 0"
-"a15" 10 "0 -1 0"
-"a14" 10 "0 -1 0"
-"a13" 10 "0 -1 0"
-"a12" 10 "0 -1 0"
-"a11" 10 "0 -1 0"
-"a10" 10 "0 -1 0"
-"a9" 10 "0 -1 0"
-"a8" 10 "0 -1 0"
-"a7" 10 "0 -1 0"
-"a6" 10 "0 -1 0"
-"a5" 10 "0 -1 0"
-"a4" 10 "0 -1 0"
-"a3" 10 "0 -1 0"
-"a2" 10 "0 -1 0"
-"a1" 10 "0 -1 0"
-"t20" 10 "0 -1 0"
-"t19" 10 "0 -1 0"
-"t18" 10 "0 -1 0"
-"t17" 10 "0 -1 0"
-"t16" 10 "0 -1 0"
-"t15" 10 "0 -1 0"
-"t13" 10 "0 -1 0"
-"t12" 10 "0 -1 0"
-"t11" 10 "0 -1 0"
-"t10" 10 "0 -1 0"
-"t9" 10 "0 -1 0"
-"t8" 10 "0 -1 0"
-"t7" 10 "0 -1 0"
-"t6" 10 "0 -1 0"
-"t5" 10 "0 -1 0"
-"t4" 10 "0 -1 0"
-"t2" 10 "0 -1 0"
-"t1" 10 "0 -1 0"
-"t3" 10 "0 -1 0"
-"t14" 10 "0 -1 0"
-"c17" 5 "0 -1 0"
-"d17" 5 "0 -1 0"
-"d16" 5 "0 -1 0"
-"c16" 5 "0 -1 0"
-"c15" 5 "0 -1 0"
-"c14" 5 "0 -1 0"
-"c13" 5 "0 -1 0"
-"c12" 5 "0 -1 0"
-"c11" 5 "0 -1 0"
-"c10" 5 "0 -1 0"
-"c9" 5 "0 -1 0"
-"c8" 5 "0 -1 0"
-"d15" 5 "0 -1 0"
-"d14" 5 "0 -1 0"
-"d13" 5 "0 -1 0"
-"d12" 5 "0 -1 0"
-"d11" 5 "0 -1 0"
-"d10" 5 "0 -1 0"
-"d8" 5 "0 -1 0"
-"f9" 5 "0 -1 0"
-"d9" 5 "0 -1 0"
-"f10" 5 "0 -1 0"
-"f11" 5 "0 -1 0"
-"g11" 5 "0 -1 0"
-"h11" 5 "0 -1 0"
-"h12" 5 "0 -1 0"
-"h13" 5 "0 -1 0"
-"h14" 5 "0 -1 0"
-"h15" 5 "0 -1 0"
-"i15" 5 "0 -1 0"
-"j16" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"k16" 5 "0 -1 0"
-"l16" 5 "0 -1 0"
-"m16" 5 "0 -1 0"
-"n16" 5 "0 -1 0"
-"o16" 5 "0 -1 0"
-"o15" 5 "0 -1 0"
-"o14" 5 "0 -1 0"
-"o13" 5 "0 -1 0"
-"o12" 5 "0 -1 0"
-"o11" 5 "0 -1 0"
-"q17" 5 "0 -1 0"
-"q16" 5 "0 -1 0"
-"q15" 5 "0 -1 0"
-"q14" 5 "0 -1 0"
-"q13" 5 "0 -1 0"
-"q11" 5 "0 -1 0"
-"q10" 5 "0 -1 0"
-"q9" 5 "0 -1 0"
-"q8" 5 "0 -1 0"
-"r8" 5 "0 -1 0"
-"q12" 5 "0 -1 0"
-"r9" 5 "0 -1 0"
-"r10" 5 "0 -1 0"
-"r11" 5 "0 -1 0"
-"r13" 5 "0 -1 0"
-"r14" 5 "0 -1 0"
-"r15" 5 "0 -1 0"
-"r16" 5 "0 -1 0"
-"r17" 5 "0 -1 0"
-"r12" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"k9" 5 "0 -1 0"
-"i9" 5 "0 -1 0"
-"h9" 5 "0 -1 0"
-"g9" 5 "0 -1 0"
-"j9" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"l11" 5 "0 -1 0"
-"l12" 5 "0 -1 0"
-"k12" 5 "0 -1 0"
-"l15" 5 "0 -1 0"
-"l14" 5 "0 -1 0"
-"n15" 1 "0 -1 0"
-"g10" 2 "0 -1 0"
-"h10" 2 "0 -1 0"
-"i10" 2 "0 -1 0"
-"j10" 2 "0 -1 0"
-"k10" 2 "0 -1 0"
-"j11" 3 "0 -1 0"
-"j12" 3 "0 -1 0"
-"k13" 3 "0 -1 0"
-"i13" 3 "0 -1 0"
-"m13" 3 "0 -1 0"
-"k6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"b12" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"s14" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"m8" 4 "0 -1 0"
-"l8" 4 "0 -1 0"
-"k8" 4 "0 -1 0"
-"j8" 4 "0 -1 0"
-"i8" 4 "0 -1 0"
-"h8" 4 "0 -1 0"
-"g8" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"e9" 4 "0 -1 0"
-"e10" 4 "0 -1 0"
-"e11" 4 "0 -1 0"
-"e12" 4 "0 -1 0"
-"f12" 4 "0 -1 0"
-"g12" 4 "0 -1 0"
-"g13" 4 "0 -1 0"
-"f13" 4 "0 -1 0"
-"e13" 4 "0 -1 0"
-"e14" 4 "0 -1 0"
-"f14" 4 "0 -1 0"
-"g14" 4 "0 -1 0"
-"g15" 4 "0 -1 0"
-"f15" 4 "0 -1 0"
-"e15" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"f16" 4 "0 -1 0"
-"g16" 4 "0 -1 0"
-"h16" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"p15" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"p13" 4 "0 -1 0"
-"p12" 4 "0 -1 0"
-"p11" 4 "0 -1 0"
-"p10" 4 "0 -1 0"
-"o10" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"p9" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
+"a20" 10 0
+"a19" 10 0
+"a18" 10 0
+"a17" 10 0
+"a16" 10 0
+"a15" 10 0
+"a14" 10 0
+"a13" 10 0
+"a12" 10 0
+"a11" 10 0
+"a10" 10 0
+"a9" 10 0
+"a8" 10 0
+"a7" 10 0
+"a6" 10 0
+"a5" 10 0
+"a4" 10 0
+"a3" 10 0
+"a2" 10 0
+"a1" 10 0
+"t20" 10 0
+"t19" 10 0
+"t18" 10 0
+"t17" 10 0
+"t16" 10 0
+"t15" 10 0
+"t13" 10 0
+"t12" 10 0
+"t11" 10 0
+"t10" 10 0
+"t9" 10 0
+"t8" 10 0
+"t7" 10 0
+"t6" 10 0
+"t5" 10 0
+"t4" 10 0
+"t2" 10 0
+"t1" 10 0
+"t3" 10 0
+"t14" 10 0
+"c17" 5 0
+"d17" 5 0
+"d16" 5 0
+"c16" 5 0
+"c15" 5 0
+"c14" 5 0
+"c13" 5 0
+"c12" 5 0
+"c11" 5 0
+"c10" 5 0
+"c9" 5 0
+"c8" 5 0
+"d15" 5 0
+"d14" 5 0
+"d13" 5 0
+"d12" 5 0
+"d11" 5 0
+"d10" 5 0
+"d8" 5 0
+"f9" 5 0
+"d9" 5 0
+"f10" 5 0
+"f11" 5 0
+"g11" 5 0
+"h11" 5 0
+"h12" 5 0
+"h13" 5 0
+"h14" 5 0
+"h15" 5 0
+"i15" 5 0
+"j16" 5 0
+"i16" 5 0
+"k16" 5 0
+"l16" 5 0
+"m16" 5 0
+"n16" 5 0
+"o16" 5 0
+"o15" 5 0
+"o14" 5 0
+"o13" 5 0
+"o12" 5 0
+"o11" 5 0
+"q17" 5 0
+"q16" 5 0
+"q15" 5 0
+"q14" 5 0
+"q13" 5 0
+"q11" 5 0
+"q10" 5 0
+"q9" 5 0
+"q8" 5 0
+"r8" 5 0
+"q12" 5 0
+"r9" 5 0
+"r10" 5 0
+"r11" 5 0
+"r13" 5 0
+"r14" 5 0
+"r15" 5 0
+"r16" 5 0
+"r17" 5 0
+"r12" 5 0
+"n11" 5 0
+"n10" 5 0
+"n9" 5 0
+"m9" 5 0
+"k9" 5 0
+"i9" 5 0
+"h9" 5 0
+"g9" 5 0
+"j9" 5 0
+"l9" 5 0
+"l11" 5 0
+"l12" 5 0
+"k12" 5 0
+"l15" 5 0
+"l14" 5 0
+"n15" 1 1
+"g10" 2 0
+"h10" 2 0
+"i10" 2 0
+"j10" 2 0
+"k10" 2 0
+"j11" 3 0
+"j12" 3 0
+"k13" 3 0
+"i13" 3 0
+"m13" 3 0
+"k6" 4 0
+"j6" 4 0
+"i6" 4 0
+"h6" 4 0
+"g6" 4 0
+"f6" 4 0
+"e6" 4 0
+"d6" 4 0
+"c6" 4 0
+"b6" 4 0
+"b5" 4 0
+"c5" 4 0
+"d5" 4 0
+"e5" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"p5" 4 0
+"q5" 4 0
+"r5" 4 0
+"s5" 4 0
+"s4" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"b4" 4 0
+"b3" 4 0
+"c3" 4 0
+"d3" 4 0
+"e3" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"p3" 4 0
+"q3" 4 0
+"r3" 4 0
+"s3" 4 0
+"s2" 4 0
+"r2" 4 0
+"q2" 4 0
+"p2" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"e2" 4 0
+"d2" 4 0
+"c2" 4 0
+"b2" 4 0
+"b1" 4 0
+"c1" 4 0
+"d1" 4 0
+"e1" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"p1" 4 0
+"q1" 4 0
+"r1" 4 0
+"s1" 4 0
+"s6" 4 0
+"r6" 4 0
+"q6" 4 0
+"p6" 4 0
+"o6" 4 0
+"n6" 4 0
+"m6" 4 0
+"l6" 4 0
+"l7" 4 0
+"k7" 4 0
+"j7" 4 0
+"i7" 4 0
+"h7" 4 0
+"g7" 4 0
+"f7" 4 0
+"e7" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"b8" 4 0
+"b9" 4 0
+"b10" 4 0
+"b11" 4 0
+"b12" 4 0
+"b13" 4 0
+"b14" 4 0
+"b15" 4 0
+"b16" 4 0
+"b17" 4 0
+"b18" 4 0
+"c18" 4 0
+"d18" 4 0
+"e18" 4 0
+"f18" 4 0
+"g18" 4 0
+"h18" 4 0
+"i18" 4 0
+"j18" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"s18" 4 0
+"s17" 4 0
+"s16" 4 0
+"s15" 4 0
+"s14" 4 0
+"s13" 4 0
+"s12" 4 0
+"s11" 4 0
+"s10" 4 0
+"s9" 4 0
+"s8" 4 0
+"s7" 4 0
+"r7" 4 0
+"q7" 4 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"m7" 4 0
+"m8" 4 0
+"l8" 4 0
+"k8" 4 0
+"j8" 4 0
+"i8" 4 0
+"h8" 4 0
+"g8" 4 0
+"f8" 4 0
+"e8" 4 0
+"e9" 4 0
+"e10" 4 0
+"e11" 4 0
+"e12" 4 0
+"f12" 4 0
+"g12" 4 0
+"g13" 4 0
+"f13" 4 0
+"e13" 4 0
+"e14" 4 0
+"f14" 4 0
+"g14" 4 0
+"g15" 4 0
+"f15" 4 0
+"e15" 4 0
+"e16" 4 0
+"f16" 4 0
+"g16" 4 0
+"h16" 4 0
+"h17" 4 0
+"g17" 4 0
+"f17" 4 0
+"e17" 4 0
+"i17" 4 0
+"j17" 4 0
+"k17" 4 0
+"l17" 4 0
+"m17" 4 0
+"n17" 4 0
+"o17" 4 0
+"p17" 4 0
+"p16" 4 0
+"p15" 4 0
+"p14" 4 0
+"p13" 4 0
+"p12" 4 0
+"p11" 4 0
+"p10" 4 0
+"o10" 4 0
+"o9" 4 0
+"p9" 4 0
+"p8" 4 0
+"o8" 4 0
+"n8" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"b19" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"f20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
index 8a2d85668d1cd0059adebb7aecb24f27650b5c28..fa22ecc60650b3d0ce95c18d84ce8afed368b1e0 100644 (file)
 // bulldozer storage "ending" last updated 16-11-2015 04:16:07
 nextlevel = "level1"
-"e15" 3 "0 0 0"
-"f14" 3 "0 0 0"
-"g13" 3 "0 0 0"
-"k13" 3 "0 0 0"
-"b14" 4 "0 0 0"
-"a14" 4 "0 0 0"
-"a13" 4 "0 0 0"
-"b13" 4 "0 0 0"
-"i13" 3 "0 0 0"
-"m13" 3 "0 0 0"
-"n14" 3 "0 0 0"
-"o15" 3 "0 0 0"
-"h17" 2 "0 0 0"
-"l17" 2 "0 0 0"
-"c12" 2 "0 0 0"
-"c13" 2 "0 0 0"
-"c14" 2 "0 0 0"
-"r14" 2 "0 0 0"
-"r13" 2 "0 0 0"
-"r12" 2 "0 0 0"
-"j15" 1 "0 -1 0"
-"s13" 4 "0 0 0"
-"t13" 4 "0 0 0"
-"t12" 4 "0 0 0"
-"s12" 4 "0 0 0"
-"b12" 4 "0 0 0"
-"a12" 4 "0 0 0"
-"a11" 4 "0 0 0"
-"b11" 4 "0 0 0"
-"c11" 4 "0 0 0"
-"d11" 4 "0 0 0"
-"e11" 4 "0 0 0"
-"f11" 4 "0 0 0"
-"g11" 4 "0 0 0"
-"h11" 4 "0 0 0"
-"i11" 4 "0 0 0"
-"j11" 4 "0 0 0"
-"k11" 4 "0 0 0"
-"l11" 4 "0 0 0"
-"m11" 4 "0 0 0"
-"n11" 4 "0 0 0"
-"o11" 4 "0 0 0"
-"p11" 4 "0 0 0"
-"q11" 4 "0 0 0"
-"r11" 4 "0 0 0"
-"s11" 4 "0 0 0"
-"t11" 4 "0 0 0"
-"t6" 6 "0 0 0"
-"s10" 4 "0 0 0"
-"r10" 4 "0 0 0"
-"q10" 4 "0 0 0"
-"b10" 6 "0 0 0"
-"o10" 4 "0 0 0"
-"c10" 6 "0 0 0"
-"d10" 6 "0 0 0"
-"e6" 4 "0 0 0"
-"b9" 6 "0 0 0"
-"b8" 6 "0 0 0"
-"c7" 4 "0 0 0"
-"b7" 6 "0 0 0"
-"b6" 6 "0 0 0"
-"c6" 6 "0 0 0"
-"d6" 6 "0 0 0"
-"f10" 6 "0 0 0"
-"g10" 6 "0 0 0"
-"h10" 6 "0 0 0"
-"a10" 4 "0 0 0"
-"a9" 4 "0 0 0"
-"h9" 4 "0 0 0"
-"c9" 4 "0 0 0"
-"d9" 4 "0 0 0"
-"h8" 4 "0 0 0"
-"h7" 4 "0 0 0"
-"i10" 6 "0 0 0"
-"i9" 6 "0 0 0"
-"j7" 4 "0 0 0"
-"j6" 4 "0 0 0"
-"j10" 4 "0 0 0"
-"i8" 6 "0 0 0"
-"m9" 4 "0 0 0"
-"i7" 6 "0 0 0"
-"o9" 4 "0 0 0"
-"i6" 6 "0 0 0"
-"q9" 4 "0 0 0"
-"r9" 4 "0 0 0"
-"s9" 4 "0 0 0"
-"h6" 6 "0 0 0"
-"g6" 6 "0 0 0"
-"s8" 4 "0 0 0"
-"r8" 4 "0 0 0"
-"q8" 4 "0 0 0"
-"f6" 6 "0 0 0"
-"o8" 4 "0 0 0"
-"f7" 6 "0 0 0"
-"m8" 4 "0 0 0"
-"f8" 6 "0 0 0"
-"f9" 6 "0 0 0"
-"k10" 6 "0 0 0"
-"e10" 4 "0 0 0"
-"d7" 4 "0 0 0"
-"e9" 4 "0 0 0"
-"e8" 4 "0 0 0"
-"e7" 4 "0 0 0"
-"l10" 6 "0 0 0"
-"c8" 4 "0 0 0"
-"m10" 6 "0 0 0"
-"a8" 4 "0 0 0"
-"a7" 4 "0 0 0"
-"g7" 4 "0 0 0"
-"g8" 4 "0 0 0"
-"g9" 4 "0 0 0"
-"n10" 6 "0 0 0"
-"n9" 6 "0 0 0"
-"n8" 6 "0 0 0"
-"d8" 4 "0 0 0"
-"n7" 6 "0 0 0"
-"n6" 6 "0 0 0"
-"m6" 6 "0 0 0"
-"l6" 6 "0 0 0"
-"m7" 4 "0 0 0"
-"k6" 6 "0 0 0"
-"o7" 4 "0 0 0"
-"k7" 6 "0 0 0"
-"q7" 4 "0 0 0"
-"r7" 4 "0 0 0"
-"s7" 4 "0 0 0"
-"k8" 6 "0 0 0"
-"k9" 6 "0 0 0"
-"s6" 4 "0 0 0"
-"p9" 6 "0 0 0"
-"p8" 6 "0 0 0"
-"p7" 6 "0 0 0"
-"o6" 4 "0 0 0"
-"p6" 6 "0 0 0"
-"q6" 6 "0 0 0"
-"r6" 6 "0 0 0"
-"p10" 6 "0 0 0"
-"j9" 4 "0 0 0"
-"j8" 4 "0 0 0"
-"t10" 6 "0 0 0"
-"t9" 6 "0 0 0"
-"t8" 6 "0 0 0"
-"l7" 4 "0 0 0"
-"l8" 4 "0 0 0"
-"l9" 4 "0 0 0"
-"t7" 4 "0 0 0"
-"a6" 4 "0 0 0"
-"a5" 4 "0 0 0"
-"b5" 4 "0 0 0"
-"c5" 4 "0 0 0"
-"d5" 4 "0 0 0"
-"e5" 4 "0 0 0"
-"f5" 4 "0 0 0"
-"g5" 4 "0 0 0"
-"h5" 4 "0 0 0"
-"i5" 4 "0 0 0"
-"j5" 4 "0 0 0"
-"k5" 4 "0 0 0"
-"l5" 4 "0 0 0"
-"m5" 4 "0 0 0"
-"n5" 4 "0 0 0"
-"o5" 4 "0 0 0"
-"p5" 4 "0 0 0"
-"q5" 4 "0 0 0"
-"r5" 4 "0 0 0"
-"s5" 4 "0 0 0"
-"t5" 4 "0 0 0"
-"t4" 4 "0 0 0"
-"s4" 4 "0 0 0"
-"r4" 4 "0 0 0"
-"q4" 4 "0 0 0"
-"p4" 4 "0 0 0"
-"o4" 4 "0 0 0"
-"n4" 4 "0 0 0"
-"m4" 4 "0 0 0"
-"l4" 4 "0 0 0"
-"k4" 4 "0 0 0"
-"j4" 4 "0 0 0"
-"i4" 4 "0 0 0"
-"h4" 4 "0 0 0"
-"g4" 4 "0 0 0"
-"f4" 4 "0 0 0"
-"e4" 4 "0 0 0"
-"d4" 4 "0 0 0"
-"c4" 4 "0 0 0"
-"b4" 4 "0 0 0"
-"a4" 4 "0 0 0"
-"a3" 4 "0 0 0"
-"b3" 4 "0 0 0"
-"c3" 4 "0 0 0"
-"d3" 4 "0 0 0"
-"e3" 4 "0 0 0"
-"f3" 4 "0 0 0"
-"g3" 4 "0 0 0"
-"h3" 4 "0 0 0"
-"i3" 4 "0 0 0"
-"j3" 4 "0 0 0"
-"k3" 4 "0 0 0"
-"l3" 4 "0 0 0"
-"m3" 4 "0 0 0"
-"n3" 4 "0 0 0"
-"o3" 4 "0 0 0"
-"p3" 4 "0 0 0"
-"q3" 4 "0 0 0"
-"r3" 4 "0 0 0"
-"s3" 4 "0 0 0"
-"t3" 4 "0 0 0"
-"t2" 4 "0 0 0"
-"s2" 4 "0 0 0"
-"r2" 4 "0 0 0"
-"q2" 4 "0 0 0"
-"p2" 4 "0 0 0"
-"o2" 4 "0 0 0"
-"n2" 4 "0 0 0"
-"m2" 4 "0 0 0"
-"l2" 4 "0 0 0"
-"k2" 4 "0 0 0"
-"j2" 4 "0 0 0"
-"i2" 4 "0 0 0"
-"h2" 4 "0 0 0"
-"g2" 4 "0 0 0"
-"f2" 4 "0 0 0"
-"e2" 4 "0 0 0"
-"d2" 4 "0 0 0"
-"c2" 4 "0 0 0"
-"b2" 4 "0 0 0"
-"a2" 4 "0 0 0"
-"a1" 4 "0 0 0"
-"b1" 4 "0 0 0"
-"c1" 4 "0 0 0"
-"d1" 4 "0 0 0"
-"e1" 4 "0 0 0"
-"f1" 4 "0 0 0"
-"g1" 4 "0 0 0"
-"h1" 4 "0 0 0"
-"i1" 4 "0 0 0"
-"j1" 4 "0 0 0"
-"k1" 4 "0 0 0"
-"l1" 4 "0 0 0"
-"m1" 4 "0 0 0"
-"n1" 4 "0 0 0"
-"o1" 4 "0 0 0"
-"p1" 4 "0 0 0"
-"q1" 4 "0 0 0"
-"r1" 4 "0 0 0"
-"s1" 4 "0 0 0"
-"t1" 4 "0 0 0"
-"t14" 4 "0 0 0"
-"s14" 4 "0 0 0"
-"b15" 4 "0 0 0"
-"a15" 4 "0 0 0"
-"a16" 4 "0 0 0"
-"b16" 4 "0 0 0"
-"s16" 4 "0 0 0"
-"t16" 4 "0 0 0"
-"t15" 4 "0 0 0"
-"s15" 4 "0 0 0"
-"t17" 4 "0 0 0"
-"s17" 4 "0 0 0"
-"b17" 4 "0 0 0"
-"a17" 4 "0 0 0"
-"a18" 4 "0 0 0"
-"b18" 4 "0 0 0"
-"s18" 4 "0 0 0"
-"t18" 4 "0 0 0"
-"t19" 4 "0 0 0"
-"s19" 4 "0 0 0"
-"r19" 4 "0 0 0"
-"q19" 4 "0 0 0"
-"p19" 4 "0 0 0"
-"o19" 4 "0 0 0"
-"n19" 4 "0 0 0"
-"m19" 4 "0 0 0"
-"l19" 4 "0 0 0"
-"k19" 4 "0 0 0"
-"j19" 4 "0 0 0"
-"i19" 4 "0 0 0"
-"h19" 4 "0 0 0"
-"g19" 4 "0 0 0"
-"f19" 4 "0 0 0"
-"e19" 4 "0 0 0"
-"d19" 4 "0 0 0"
-"c19" 4 "0 0 0"
-"b19" 4 "0 0 0"
-"a19" 4 "0 0 0"
-"a20" 4 "0 0 0"
-"b20" 4 "0 0 0"
-"c20" 4 "0 0 0"
-"d20" 4 "0 0 0"
-"e20" 4 "0 0 0"
-"f20" 4 "0 0 0"
-"g20" 4 "0 0 0"
-"h20" 4 "0 0 0"
-"i20" 4 "0 0 0"
-"j20" 4 "0 0 0"
-"k20" 4 "0 0 0"
-"l20" 4 "0 0 0"
-"m20" 4 "0 0 0"
-"n20" 4 "0 0 0"
-"o20" 4 "0 0 0"
-"p20" 4 "0 0 0"
-"q20" 4 "0 0 0"
-"r20" 4 "0 0 0"
-"s20" 4 "0 0 0"
-"t20" 4 "0 0 0"
+"e15" 3 0
+"f14" 3 0
+"g13" 3 0
+"k13" 3 0
+"b14" 4 0
+"a14" 4 0
+"a13" 4 0
+"b13" 4 0
+"i13" 3 0
+"m13" 3 0
+"n14" 3 0
+"o15" 3 0
+"h17" 2 0
+"l17" 2 0
+"c12" 2 0
+"c13" 2 0
+"c14" 2 0
+"r14" 2 0
+"r13" 2 0
+"r12" 2 0
+"j15" 1 1
+"s13" 4 0
+"t13" 4 0
+"t12" 4 0
+"s12" 4 0
+"b12" 4 0
+"a12" 4 0
+"a11" 4 0
+"b11" 4 0
+"c11" 4 0
+"d11" 4 0
+"e11" 4 0
+"f11" 4 0
+"g11" 4 0
+"h11" 4 0
+"i11" 4 0
+"j11" 4 0
+"k11" 4 0
+"l11" 4 0
+"m11" 4 0
+"n11" 4 0
+"o11" 4 0
+"p11" 4 0
+"q11" 4 0
+"r11" 4 0
+"s11" 4 0
+"t11" 4 0
+"t6" 6 0
+"s10" 4 0
+"r10" 4 0
+"q10" 4 0
+"b10" 6 0
+"o10" 4 0
+"c10" 6 0
+"d10" 6 0
+"e6" 4 0
+"b9" 6 0
+"b8" 6 0
+"c7" 4 0
+"b7" 6 0
+"b6" 6 0
+"c6" 6 0
+"d6" 6 0
+"f10" 6 0
+"g10" 6 0
+"h10" 6 0
+"a10" 4 0
+"a9" 4 0
+"h9" 4 0
+"c9" 4 0
+"d9" 4 0
+"h8" 4 0
+"h7" 4 0
+"i10" 6 0
+"i9" 6 0
+"j7" 4 0
+"j6" 4 0
+"j10" 4 0
+"i8" 6 0
+"m9" 4 0
+"i7" 6 0
+"o9" 4 0
+"i6" 6 0
+"q9" 4 0
+"r9" 4 0
+"s9" 4 0
+"h6" 6 0
+"g6" 6 0
+"s8" 4 0
+"r8" 4 0
+"q8" 4 0
+"f6" 6 0
+"o8" 4 0
+"f7" 6 0
+"m8" 4 0
+"f8" 6 0
+"f9" 6 0
+"k10" 6 0
+"e10" 4 0
+"d7" 4 0
+"e9" 4 0
+"e8" 4 0
+"e7" 4 0
+"l10" 6 0
+"c8" 4 0
+"m10" 6 0
+"a8" 4 0
+"a7" 4 0
+"g7" 4 0
+"g8" 4 0
+"g9" 4 0
+"n10" 6 0
+"n9" 6 0
+"n8" 6 0
+"d8" 4 0
+"n7" 6 0
+"n6" 6 0
+"m6" 6 0
+"l6" 6 0
+"m7" 4 0
+"k6" 6 0
+"o7" 4 0
+"k7" 6 0
+"q7" 4 0
+"r7" 4 0
+"s7" 4 0
+"k8" 6 0
+"k9" 6 0
+"s6" 4 0
+"p9" 6 0
+"p8" 6 0
+"p7" 6 0
+"o6" 4 0
+"p6" 6 0
+"q6" 6 0
+"r6" 6 0
+"p10" 6 0
+"j9" 4 0
+"j8" 4 0
+"t10" 6 0
+"t9" 6 0
+"t8" 6 0
+"l7" 4 0
+"l8" 4 0
+"l9" 4 0
+"t7" 4 0
+"a6" 4 0
+"a5" 4 0
+"b5" 4 0
+"c5" 4 0
+"d5" 4 0
+"e5" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"p5" 4 0
+"q5" 4 0
+"r5" 4 0
+"s5" 4 0
+"t5" 4 0
+"t4" 4 0
+"s4" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"b4" 4 0
+"a4" 4 0
+"a3" 4 0
+"b3" 4 0
+"c3" 4 0
+"d3" 4 0
+"e3" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"p3" 4 0
+"q3" 4 0
+"r3" 4 0
+"s3" 4 0
+"t3" 4 0
+"t2" 4 0
+"s2" 4 0
+"r2" 4 0
+"q2" 4 0
+"p2" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"e2" 4 0
+"d2" 4 0
+"c2" 4 0
+"b2" 4 0
+"a2" 4 0
+"a1" 4 0
+"b1" 4 0
+"c1" 4 0
+"d1" 4 0
+"e1" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"p1" 4 0
+"q1" 4 0
+"r1" 4 0
+"s1" 4 0
+"t1" 4 0
+"t14" 4 0
+"s14" 4 0
+"b15" 4 0
+"a15" 4 0
+"a16" 4 0
+"b16" 4 0
+"s16" 4 0
+"t16" 4 0
+"t15" 4 0
+"s15" 4 0
+"t17" 4 0
+"s17" 4 0
+"b17" 4 0
+"a17" 4 0
+"a18" 4 0
+"b18" 4 0
+"s18" 4 0
+"t18" 4 0
+"t19" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"b19" 4 0
+"a19" 4 0
+"a20" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"f20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"t20" 4 0
index 1be5fb60989dfb56c69440b0eafed0190f1503ff..3da61ac5233150d6ba08c65aa47980d368378168 100644 (file)
 // bulldozer storage "level2" last updated 16-11-2015 03:34:13
 nextlevel = "level3"
-"a20" 4 "0 0 0"
-"b20" 4 "0 0 0"
-"c20" 4 "0 0 0"
-"d20" 4 "0 0 0"
-"e20" 4 "0 0 0"
-"r13" 5 "0 0 0"
-"f20" 4 "0 0 0"
-"g20" 4 "0 0 0"
-"c12" 5 "0 0 0"
-"h20" 4 "0 0 0"
-"c13" 5 "0 0 0"
-"i20" 4 "0 0 0"
-"c14" 5 "0 0 0"
-"j20" 4 "0 0 0"
-"c15" 5 "0 0 0"
-"k20" 4 "0 0 0"
-"c16" 5 "0 0 0"
-"l20" 4 "0 0 0"
-"c17" 5 "0 0 0"
-"m20" 4 "0 0 0"
-"c18" 5 "0 0 0"
-"n20" 4 "0 0 0"
-"c19" 5 "0 0 0"
-"o20" 4 "0 0 0"
-"r18" 5 "0 0 0"
-"p20" 4 "0 0 0"
-"r17" 5 "0 0 0"
-"q20" 4 "0 0 0"
-"r12" 5 "0 0 0"
-"r20" 4 "0 0 0"
-"r15" 5 "0 0 0"
-"r14" 5 "0 0 0"
-"s20" 4 "0 0 0"
-"t20" 4 "0 0 0"
-"t19" 4 "0 0 0"
-"t18" 4 "0 0 0"
-"t17" 4 "0 0 0"
-"t16" 4 "0 0 0"
-"t15" 4 "0 0 0"
-"t14" 4 "0 0 0"
-"t13" 4 "0 0 0"
-"t9" 4 "0 0 0"
-"s9" 4 "0 0 0"
-"r9" 4 "0 0 0"
-"q9" 4 "0 0 0"
-"p9" 4 "0 0 0"
-"o9" 4 "0 0 0"
-"n9" 4 "0 0 0"
-"m9" 4 "0 0 0"
-"l9" 4 "0 0 0"
-"k9" 4 "0 0 0"
-"j9" 4 "0 0 0"
-"i9" 4 "0 0 0"
-"h9" 4 "0 0 0"
-"g9" 4 "0 0 0"
-"f9" 4 "0 0 0"
-"e9" 4 "0 0 0"
-"d9" 4 "0 0 0"
-"c9" 4 "0 0 0"
-"b9" 4 "0 0 0"
-"a9" 4 "0 0 0"
-"a10" 4 "0 0 0"
-"a11" 4 "0 0 0"
-"a12" 4 "0 0 0"
-"a13" 4 "0 0 0"
-"a14" 4 "0 0 0"
-"a15" 4 "0 0 0"
-"a16" 4 "0 0 0"
-"a17" 4 "0 0 0"
-"a18" 4 "0 0 0"
-"a19" 4 "0 0 0"
-"t12" 4 "0 0 0"
-"t11" 4 "0 0 0"
-"t10" 4 "0 0 0"
-"k4" 4 "0 0 0"
-"t3" 4 "0 0 0"
-"s4" 4 "0 0 0"
-"t2" 4 "0 0 0"
-"l5" 4 "0 0 0"
-"j6" 4 "0 0 0"
-"r11" 5 "0 0 0"
-"r6" 4 "0 0 0"
-"r10" 5 "0 0 0"
-"b7" 5 "0 0 0"
-"i6" 4 "0 0 0"
-"a7" 5 "0 0 0"
-"a2" 4 "0 0 0"
-"c4" 5 "0 0 0"
-"b8" 4 "0 0 0"
-"a6" 5 "0 0 0"
-"o6" 4 "0 0 0"
-"p6" 4 "0 0 0"
-"a5" 5 "0 0 0"
-"l7" 4 "0 0 0"
-"l6" 4 "0 0 0"
-"t6" 4 "0 0 0"
-"t5" 4 "0 0 0"
-"b19" 2 "0 0 0"
-"k5" 4 "0 0 0"
-"b18" 2 "0 0 0"
-"p5" 4 "0 0 0"
-"j4" 4 "0 0 0"
-"k15" 1 "0 -1 0"
-"g16" 3 "0 0 0"
-"g12" 3 "0 0 0"
-"l3" 4 "0 0 0"
-"b3" 5 "0 0 0"
-"i5" 4 "0 0 0"
-"c8" 4 "0 0 0"
-"c5" 5 "0 0 0"
-"c6" 5 "0 0 0"
-"a4" 5 "0 0 0"
-"a3" 5 "0 0 0"
-"a8" 4 "0 0 0"
-"c3" 4 "0 0 0"
-"c7" 4 "0 0 0"
-"k6" 5 "0 0 0"
-"d6" 4 "0 0 0"
-"e7" 5 "0 0 0"
-"e6" 5 "0 0 0"
-"s10" 2 "0 0 0"
-"d5" 4 "0 0 0"
-"s11" 2 "0 0 0"
-"d4" 4 "0 0 0"
-"o17" 3 "0 0 0"
-"o13" 3 "0 0 0"
-"l4" 4 "0 0 0"
-"h7" 4 "0 0 0"
-"o4" 4 "0 0 0"
-"p4" 4 "0 0 0"
-"t4" 4 "0 0 0"
-"h6" 4 "0 0 0"
-"h5" 4 "0 0 0"
-"h4" 4 "0 0 0"
-"h3" 4 "0 0 0"
-"f4" 4 "0 0 0"
-"f5" 4 "0 0 0"
-"f6" 4 "0 0 0"
-"n6" 4 "0 0 0"
-"d3" 4 "0 0 0"
-"o5" 4 "0 0 0"
-"n4" 4 "0 0 0"
-"e5" 5 "0 0 0"
-"b2" 4 "0 0 0"
-"c2" 4 "0 0 0"
-"d2" 4 "0 0 0"
-"e2" 4 "0 0 0"
-"f2" 4 "0 0 0"
-"g2" 4 "0 0 0"
-"h2" 4 "0 0 0"
-"i2" 4 "0 0 0"
-"j2" 4 "0 0 0"
-"k2" 4 "0 0 0"
-"l2" 4 "0 0 0"
-"m2" 4 "0 0 0"
-"n2" 4 "0 0 0"
-"o2" 4 "0 0 0"
-"p2" 4 "0 0 0"
-"q2" 4 "0 0 0"
-"r2" 4 "0 0 0"
-"s2" 4 "0 0 0"
-"t1" 4 "0 0 0"
-"s1" 4 "0 0 0"
-"r1" 4 "0 0 0"
-"q1" 4 "0 0 0"
-"p1" 4 "0 0 0"
-"o1" 4 "0 0 0"
-"n1" 4 "0 0 0"
-"m1" 4 "0 0 0"
-"l1" 4 "0 0 0"
-"k1" 4 "0 0 0"
-"j1" 4 "0 0 0"
-"i1" 4 "0 0 0"
-"h1" 4 "0 0 0"
-"g1" 4 "0 0 0"
-"f1" 4 "0 0 0"
-"e1" 4 "0 0 0"
-"d1" 4 "0 0 0"
-"c1" 4 "0 0 0"
-"b1" 4 "0 0 0"
-"a1" 4 "0 0 0"
-"t7" 4 "0 0 0"
-"p3" 4 "0 0 0"
-"p7" 4 "0 0 0"
-"d7" 4 "0 0 0"
-"r3" 4 "0 0 0"
-"e4" 5 "0 0 0"
-"e3" 5 "0 0 0"
-"f3" 5 "0 0 0"
-"d8" 4 "0 0 0"
-"e8" 4 "0 0 0"
-"f8" 4 "0 0 0"
-"g8" 4 "0 0 0"
-"h8" 4 "0 0 0"
-"i8" 4 "0 0 0"
-"j8" 4 "0 0 0"
-"k8" 4 "0 0 0"
-"l8" 4 "0 0 0"
-"m8" 4 "0 0 0"
-"n8" 4 "0 0 0"
-"o8" 4 "0 0 0"
-"p8" 4 "0 0 0"
-"q8" 4 "0 0 0"
-"r8" 4 "0 0 0"
-"s8" 4 "0 0 0"
-"t8" 4 "0 0 0"
-"g3" 5 "0 0 0"
-"g7" 5 "0 0 0"
-"g4" 5 "0 0 0"
-"g6" 5 "0 0 0"
-"g5" 5 "0 0 0"
-"f7" 5 "0 0 0"
-"j5" 5 "0 0 0"
-"i7" 5 "0 0 0"
-"j7" 5 "0 0 0"
-"k7" 5 "0 0 0"
-"i4" 5 "0 0 0"
-"i3" 5 "0 0 0"
-"j3" 5 "0 0 0"
-"k3" 5 "0 0 0"
-"m7" 5 "0 0 0"
-"m6" 5 "0 0 0"
-"m4" 5 "0 0 0"
-"m5" 5 "0 0 0"
-"m3" 5 "0 0 0"
-"n3" 5 "0 0 0"
-"o3" 5 "0 0 0"
-"n5" 5 "0 0 0"
-"n7" 5 "0 0 0"
-"o7" 5 "0 0 0"
-"q7" 5 "0 0 0"
-"q6" 5 "0 0 0"
-"q4" 5 "0 0 0"
-"q5" 5 "0 0 0"
-"q3" 5 "0 0 0"
-"r5" 5 "0 0 0"
-"r4" 5 "0 0 0"
-"s3" 5 "0 0 0"
-"s5" 5 "0 0 0"
-"s6" 5 "0 0 0"
-"s7" 5 "0 0 0"
-"r7" 5 "0 0 0"
-"b6" 4 "0 0 0"
-"b5" 4 "0 0 0"
-"b4" 4 "0 0 0"
+"a20" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"r13" 5 0
+"f20" 4 0
+"g20" 4 0
+"c12" 5 0
+"h20" 4 0
+"c13" 5 0
+"i20" 4 0
+"c14" 5 0
+"j20" 4 0
+"c15" 5 0
+"k20" 4 0
+"c16" 5 0
+"l20" 4 0
+"c17" 5 0
+"m20" 4 0
+"c18" 5 0
+"n20" 4 0
+"c19" 5 0
+"o20" 4 0
+"r18" 5 0
+"p20" 4 0
+"r17" 5 0
+"q20" 4 0
+"r12" 5 0
+"r20" 4 0
+"r15" 5 0
+"r14" 5 0
+"s20" 4 0
+"t20" 4 0
+"t19" 4 0
+"t18" 4 0
+"t17" 4 0
+"t16" 4 0
+"t15" 4 0
+"t14" 4 0
+"t13" 4 0
+"t9" 4 0
+"s9" 4 0
+"r9" 4 0
+"q9" 4 0
+"p9" 4 0
+"o9" 4 0
+"n9" 4 0
+"m9" 4 0
+"l9" 4 0
+"k9" 4 0
+"j9" 4 0
+"i9" 4 0
+"h9" 4 0
+"g9" 4 0
+"f9" 4 0
+"e9" 4 0
+"d9" 4 0
+"c9" 4 0
+"b9" 4 0
+"a9" 4 0
+"a10" 4 0
+"a11" 4 0
+"a12" 4 0
+"a13" 4 0
+"a14" 4 0
+"a15" 4 0
+"a16" 4 0
+"a17" 4 0
+"a18" 4 0
+"a19" 4 0
+"t12" 4 0
+"t11" 4 0
+"t10" 4 0
+"k4" 4 0
+"t3" 4 0
+"s4" 4 0
+"t2" 4 0
+"l5" 4 0
+"j6" 4 0
+"r11" 5 0
+"r6" 4 0
+"r10" 5 0
+"b7" 5 0
+"i6" 4 0
+"a7" 5 0
+"a2" 4 0
+"c4" 5 0
+"b8" 4 0
+"a6" 5 0
+"o6" 4 0
+"p6" 4 0
+"a5" 5 0
+"l7" 4 0
+"l6" 4 0
+"t6" 4 0
+"t5" 4 0
+"b19" 2 0
+"k5" 4 0
+"b18" 2 0
+"p5" 4 0
+"j4" 4 0
+"k15" 1 1
+"g16" 3 0
+"g12" 3 0
+"l3" 4 0
+"b3" 5 0
+"i5" 4 0
+"c8" 4 0
+"c5" 5 0
+"c6" 5 0
+"a4" 5 0
+"a3" 5 0
+"a8" 4 0
+"c3" 4 0
+"c7" 4 0
+"k6" 5 0
+"d6" 4 0
+"e7" 5 0
+"e6" 5 0
+"s10" 2 0
+"d5" 4 0
+"s11" 2 0
+"d4" 4 0
+"o17" 3 0
+"o13" 3 0
+"l4" 4 0
+"h7" 4 0
+"o4" 4 0
+"p4" 4 0
+"t4" 4 0
+"h6" 4 0
+"h5" 4 0
+"h4" 4 0
+"h3" 4 0
+"f4" 4 0
+"f5" 4 0
+"f6" 4 0
+"n6" 4 0
+"d3" 4 0
+"o5" 4 0
+"n4" 4 0
+"e5" 5 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"t1" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"a1" 4 0
+"t7" 4 0
+"p3" 4 0
+"p7" 4 0
+"d7" 4 0
+"r3" 4 0
+"e4" 5 0
+"e3" 5 0
+"f3" 5 0
+"d8" 4 0
+"e8" 4 0
+"f8" 4 0
+"g8" 4 0
+"h8" 4 0
+"i8" 4 0
+"j8" 4 0
+"k8" 4 0
+"l8" 4 0
+"m8" 4 0
+"n8" 4 0
+"o8" 4 0
+"p8" 4 0
+"q8" 4 0
+"r8" 4 0
+"s8" 4 0
+"t8" 4 0
+"g3" 5 0
+"g7" 5 0
+"g4" 5 0
+"g6" 5 0
+"g5" 5 0
+"f7" 5 0
+"j5" 5 0
+"i7" 5 0
+"j7" 5 0
+"k7" 5 0
+"i4" 5 0
+"i3" 5 0
+"j3" 5 0
+"k3" 5 0
+"m7" 5 0
+"m6" 5 0
+"m4" 5 0
+"m5" 5 0
+"m3" 5 0
+"n3" 5 0
+"o3" 5 0
+"n5" 5 0
+"n7" 5 0
+"o7" 5 0
+"q7" 5 0
+"q6" 5 0
+"q4" 5 0
+"q5" 5 0
+"q3" 5 0
+"r5" 5 0
+"r4" 5 0
+"s3" 5 0
+"s5" 5 0
+"s6" 5 0
+"s7" 5 0
+"r7" 5 0
+"b6" 4 0
+"b5" 4 0
+"b4" 4 0
index 7433ae2095d75de30c35252c0b0b6f5736b0765d..2b12c6757ab46b66226732913ff0f2e68c730101 100644 (file)
 // bulldozer storage "level3" last updated 16-11-2015 04:06:54
 nextlevel = "level4"
-"a20" 4 "0 0 0"
-"a19" 4 "0 0 0"
-"f14" 2 "0 0 0"
-"a18" 4 "0 0 0"
-"a17" 4 "0 0 0"
-"a16" 4 "0 0 0"
-"a15" 4 "0 0 0"
-"f14" 3 "0 0 0"
-"b7" 4 "0 0 0"
-"b5" 4 "0 0 0"
-"b3" 4 "0 0 0"
-"s7" 4 "0 0 0"
-"s5" 4 "0 0 0"
-"s3" 4 "0 0 0"
-"b19" 4 "0 0 0"
-"s19" 4 "0 0 0"
-"a14" 4 "0 0 0"
-"a13" 4 "0 0 0"
-"a12" 4 "0 0 0"
-"a11" 4 "0 0 0"
-"a10" 4 "0 0 0"
-"a9" 4 "0 0 0"
-"a8" 4 "0 0 0"
-"a7" 4 "0 0 0"
-"a6" 4 "0 0 0"
-"a5" 4 "0 0 0"
-"a4" 4 "0 0 0"
-"a3" 4 "0 0 0"
-"a2" 4 "0 0 0"
-"a1" 4 "0 0 0"
-"b1" 4 "0 0 0"
-"c1" 4 "0 0 0"
-"d1" 4 "0 0 0"
-"e1" 4 "0 0 0"
-"f1" 4 "0 0 0"
-"g1" 4 "0 0 0"
-"h1" 4 "0 0 0"
-"i1" 4 "0 0 0"
-"j1" 4 "0 0 0"
-"k1" 4 "0 0 0"
-"l1" 4 "0 0 0"
-"m1" 4 "0 0 0"
-"n1" 4 "0 0 0"
-"o1" 4 "0 0 0"
-"p1" 4 "0 0 0"
-"q1" 4 "0 0 0"
-"r1" 4 "0 0 0"
-"s1" 4 "0 0 0"
-"t1" 4 "0 0 0"
-"t2" 4 "0 0 0"
-"t3" 4 "0 0 0"
-"t4" 4 "0 0 0"
-"t5" 4 "0 0 0"
-"t6" 4 "0 0 0"
-"t12" 4 "0 0 0"
-"t9" 4 "0 0 0"
-"t10" 4 "0 0 0"
-"t11" 4 "0 0 0"
-"t7" 4 "0 0 0"
-"t8" 4 "0 0 0"
-"t13" 4 "0 0 0"
-"t14" 4 "0 0 0"
-"t15" 4 "0 0 0"
-"t16" 4 "0 0 0"
-"t17" 4 "0 0 0"
-"t18" 4 "0 0 0"
-"t19" 4 "0 0 0"
-"t20" 4 "0 0 0"
-"r20" 4 "0 0 0"
-"q20" 4 "0 0 0"
-"p20" 4 "0 0 0"
-"s20" 4 "0 0 0"
-"o20" 4 "0 0 0"
-"n20" 4 "0 0 0"
-"m20" 4 "0 0 0"
-"l20" 4 "0 0 0"
-"k20" 4 "0 0 0"
-"j20" 4 "0 0 0"
-"i20" 4 "0 0 0"
-"h20" 4 "0 0 0"
-"g20" 4 "0 0 0"
-"f20" 4 "0 0 0"
-"e20" 4 "0 0 0"
-"d20" 4 "0 0 0"
-"c20" 4 "0 0 0"
-"b20" 4 "0 0 0"
-"c19" 4 "0 0 0"
-"b18" 4 "0 0 0"
-"b16" 4 "0 0 0"
-"c18" 4 "0 0 0"
-"b14" 4 "0 0 0"
-"b17" 7 "0 0 0"
-"b12" 4 "0 0 0"
-"b15" 7 "0 0 0"
-"b9" 7 "0 0 0"
-"b8" 4 "0 0 0"
-"b11" 7 "0 0 0"
-"b10" 4 "0 0 0"
-"b6" 4 "0 0 0"
-"b13" 7 "0 0 0"
-"b2" 4 "0 0 0"
-"b4" 4 "0 0 0"
-"s18" 4 "0 0 0"
-"s13" 7 "0 0 0"
-"s16" 4 "0 0 0"
-"s11" 7 "0 0 0"
-"s14" 4 "0 0 0"
-"s9" 7 "0 0 0"
-"s12" 4 "0 0 0"
-"s8" 4 "0 0 0"
-"s6" 4 "0 0 0"
-"s4" 4 "0 0 0"
-"s2" 4 "0 0 0"
-"s10" 4 "0 0 0"
-"s17" 7 "0 0 0"
-"s15" 7 "0 0 0"
-"c7" 4 "0 0 0"
-"c6" 4 "0 0 0"
-"d7" 4 "0 0 0"
-"f7" 4 "0 0 0"
-"e7" 4 "0 0 0"
-"g7" 4 "0 0 0"
-"h7" 4 "0 0 0"
-"i7" 4 "0 0 0"
-"j7" 4 "0 0 0"
-"k7" 4 "0 0 0"
-"l7" 4 "0 0 0"
-"m7" 4 "0 0 0"
-"n7" 4 "0 0 0"
-"o7" 4 "0 0 0"
-"p7" 4 "0 0 0"
-"q7" 4 "0 0 0"
-"r7" 4 "0 0 0"
-"h4" 4 "0 0 0"
-"g4" 4 "0 0 0"
-"f4" 4 "0 0 0"
-"e4" 4 "0 0 0"
-"d4" 4 "0 0 0"
-"c4" 4 "0 0 0"
-"c3" 4 "0 0 0"
-"d3" 4 "0 0 0"
-"e3" 4 "0 0 0"
-"f3" 4 "0 0 0"
-"g3" 4 "0 0 0"
-"h3" 4 "0 0 0"
-"i3" 4 "0 0 0"
-"j3" 4 "0 0 0"
-"k3" 4 "0 0 0"
-"l3" 4 "0 0 0"
-"m3" 4 "0 0 0"
-"n3" 4 "0 0 0"
-"o3" 4 "0 0 0"
-"p3" 4 "0 0 0"
-"q3" 4 "0 0 0"
-"r3" 4 "0 0 0"
-"r2" 4 "0 0 0"
-"q2" 4 "0 0 0"
-"p2" 4 "0 0 0"
-"o2" 4 "0 0 0"
-"n2" 4 "0 0 0"
-"m2" 4 "0 0 0"
-"l2" 4 "0 0 0"
-"k2" 4 "0 0 0"
-"j2" 4 "0 0 0"
-"i2" 4 "0 0 0"
-"h2" 4 "0 0 0"
-"g2" 4 "0 0 0"
-"f2" 4 "0 0 0"
-"e2" 4 "0 0 0"
-"d2" 4 "0 0 0"
-"c2" 4 "0 0 0"
-"r4" 4 "0 0 0"
-"q4" 4 "0 0 0"
-"p4" 4 "0 0 0"
-"o4" 4 "0 0 0"
-"n4" 4 "0 0 0"
-"m4" 4 "0 0 0"
-"l4" 4 "0 0 0"
-"k4" 4 "0 0 0"
-"j4" 4 "0 0 0"
-"i4" 4 "0 0 0"
-"i5" 4 "0 0 0"
-"h5" 4 "0 0 0"
-"g5" 4 "0 0 0"
-"f5" 4 "0 0 0"
-"e5" 4 "0 0 0"
-"d5" 4 "0 0 0"
-"c5" 4 "0 0 0"
-"d6" 4 "0 0 0"
-"e6" 4 "0 0 0"
-"f6" 4 "0 0 0"
-"g6" 4 "0 0 0"
-"h6" 4 "0 0 0"
-"i6" 4 "0 0 0"
-"j6" 4 "0 0 0"
-"k6" 4 "0 0 0"
-"l6" 4 "0 0 0"
-"m6" 4 "0 0 0"
-"n6" 4 "0 0 0"
-"o6" 4 "0 0 0"
-"p6" 4 "0 0 0"
-"q6" 4 "0 0 0"
-"r6" 4 "0 0 0"
-"r5" 4 "0 0 0"
-"q5" 4 "0 0 0"
-"p5" 4 "0 0 0"
-"o5" 4 "0 0 0"
-"n5" 4 "0 0 0"
-"m5" 4 "0 0 0"
-"l5" 4 "0 0 0"
-"k5" 4 "0 0 0"
-"j5" 4 "0 0 0"
-"d18" 4 "0 0 0"
-"e18" 4 "0 0 0"
-"g18" 4 "0 0 0"
-"h18" 4 "0 0 0"
-"f18" 4 "0 0 0"
-"j18" 4 "0 0 0"
-"i18" 4 "0 0 0"
-"k18" 4 "0 0 0"
-"m18" 4 "0 0 0"
-"l18" 4 "0 0 0"
-"n18" 4 "0 0 0"
-"o18" 4 "0 0 0"
-"p18" 4 "0 0 0"
-"q18" 4 "0 0 0"
-"r18" 4 "0 0 0"
-"q19" 4 "0 0 0"
-"p19" 4 "0 0 0"
-"o19" 4 "0 0 0"
-"n19" 4 "0 0 0"
-"m19" 4 "0 0 0"
-"l19" 4 "0 0 0"
-"k19" 4 "0 0 0"
-"j19" 4 "0 0 0"
-"i19" 4 "0 0 0"
-"h19" 4 "0 0 0"
-"g19" 4 "0 0 0"
-"f19" 4 "0 0 0"
-"e19" 4 "0 0 0"
-"d19" 4 "0 0 0"
-"r19" 4 "0 0 0"
-"f15" 5 "0 0 0"
-"f13" 5 "0 0 0"
-"f12" 5 "0 0 0"
-"g12" 5 "0 0 0"
-"g9" 5 "0 0 0"
-"g10" 5 "0 0 0"
-"g11" 5 "0 0 0"
-"h9" 5 "0 0 0"
-"i9" 5 "0 0 0"
-"k9" 5 "0 0 0"
-"l9" 5 "0 0 0"
-"l13" 5 "0 0 0"
-"l12" 5 "0 0 0"
-"l10" 5 "0 0 0"
-"l11" 5 "0 0 0"
-"l15" 5 "0 0 0"
-"l14" 5 "0 0 0"
-"l16" 5 "0 0 0"
-"g15" 5 "0 0 0"
-"h15" 5 "0 0 0"
-"i15" 5 "0 0 0"
-"j15" 5 "0 0 0"
-"k15" 5 "0 0 0"
-"p9" 5 "0 0 0"
-"p10" 5 "0 0 0"
-"q10" 5 "0 0 0"
-"q8" 2 "0 0 0"
-"r8" 2 "0 0 0"
-"r9" 2 "0 0 0"
-"j9" 3 "0 0 0"
-"i13" 2 "0 0 0"
-"k13" 1 "0 -1 0"
-"n13" 3 "0 0 0"
-"n14" 3 "0 0 0"
-"n12" 3 "0 0 0"
+"a20" 4 0
+"a19" 4 0
+"f14" 2 0
+"a18" 4 0
+"a17" 4 0
+"a16" 4 0
+"a15" 4 0
+"f14" 3 0
+"b7" 4 0
+"b5" 4 0
+"b3" 4 0
+"s7" 4 0
+"s5" 4 0
+"s3" 4 0
+"b19" 4 0
+"s19" 4 0
+"a14" 4 0
+"a13" 4 0
+"a12" 4 0
+"a11" 4 0
+"a10" 4 0
+"a9" 4 0
+"a8" 4 0
+"a7" 4 0
+"a6" 4 0
+"a5" 4 0
+"a4" 4 0
+"a3" 4 0
+"a2" 4 0
+"a1" 4 0
+"b1" 4 0
+"c1" 4 0
+"d1" 4 0
+"e1" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"p1" 4 0
+"q1" 4 0
+"r1" 4 0
+"s1" 4 0
+"t1" 4 0
+"t2" 4 0
+"t3" 4 0
+"t4" 4 0
+"t5" 4 0
+"t6" 4 0
+"t12" 4 0
+"t9" 4 0
+"t10" 4 0
+"t11" 4 0
+"t7" 4 0
+"t8" 4 0
+"t13" 4 0
+"t14" 4 0
+"t15" 4 0
+"t16" 4 0
+"t17" 4 0
+"t18" 4 0
+"t19" 4 0
+"t20" 4 0
+"r20" 4 0
+"q20" 4 0
+"p20" 4 0
+"s20" 4 0
+"o20" 4 0
+"n20" 4 0
+"m20" 4 0
+"l20" 4 0
+"k20" 4 0
+"j20" 4 0
+"i20" 4 0
+"h20" 4 0
+"g20" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"c19" 4 0
+"b18" 4 0
+"b16" 4 0
+"c18" 4 0
+"b14" 4 0
+"b17" 7 0
+"b12" 4 0
+"b15" 7 0
+"b9" 7 0
+"b8" 4 0
+"b11" 7 0
+"b10" 4 0
+"b6" 4 0
+"b13" 7 0
+"b2" 4 0
+"b4" 4 0
+"s18" 4 0
+"s13" 7 0
+"s16" 4 0
+"s11" 7 0
+"s14" 4 0
+"s9" 7 0
+"s12" 4 0
+"s8" 4 0
+"s6" 4 0
+"s4" 4 0
+"s2" 4 0
+"s10" 4 0
+"s17" 7 0
+"s15" 7 0
+"c7" 4 0
+"c6" 4 0
+"d7" 4 0
+"f7" 4 0
+"e7" 4 0
+"g7" 4 0
+"h7" 4 0
+"i7" 4 0
+"j7" 4 0
+"k7" 4 0
+"l7" 4 0
+"m7" 4 0
+"n7" 4 0
+"o7" 4 0
+"p7" 4 0
+"q7" 4 0
+"r7" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"c3" 4 0
+"d3" 4 0
+"e3" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"p3" 4 0
+"q3" 4 0
+"r3" 4 0
+"r2" 4 0
+"q2" 4 0
+"p2" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"e2" 4 0
+"d2" 4 0
+"c2" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"i5" 4 0
+"h5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"c5" 4 0
+"d6" 4 0
+"e6" 4 0
+"f6" 4 0
+"g6" 4 0
+"h6" 4 0
+"i6" 4 0
+"j6" 4 0
+"k6" 4 0
+"l6" 4 0
+"m6" 4 0
+"n6" 4 0
+"o6" 4 0
+"p6" 4 0
+"q6" 4 0
+"r6" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"l5" 4 0
+"k5" 4 0
+"j5" 4 0
+"d18" 4 0
+"e18" 4 0
+"g18" 4 0
+"h18" 4 0
+"f18" 4 0
+"j18" 4 0
+"i18" 4 0
+"k18" 4 0
+"m18" 4 0
+"l18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"e19" 4 0
+"d19" 4 0
+"r19" 4 0
+"f15" 5 0
+"f13" 5 0
+"f12" 5 0
+"g12" 5 0
+"g9" 5 0
+"g10" 5 0
+"g11" 5 0
+"h9" 5 0
+"i9" 5 0
+"k9" 5 0
+"l9" 5 0
+"l13" 5 0
+"l12" 5 0
+"l10" 5 0
+"l11" 5 0
+"l15" 5 0
+"l14" 5 0
+"l16" 5 0
+"g15" 5 0
+"h15" 5 0
+"i15" 5 0
+"j15" 5 0
+"k15" 5 0
+"p9" 5 0
+"p10" 5 0
+"q10" 5 0
+"q8" 2 0
+"r8" 2 0
+"r9" 2 0
+"j9" 3 0
+"i13" 2 0
+"k13" 1 1
+"n13" 3 0
+"n14" 3 0
+"n12" 3 0
index 596ae6ee710cad1d3cf7d7eae68279ce56de484e..19fea571a8daf73018028c85b5e5cc3c9e6253c6 100644 (file)
 // bulldozer storage "level4" last updated 16-11-2015 05:09:50
 nextlevel = "level5"
-"k10" 9 "0 -1 0"
-"k11" 9 "0 -1 0"
-"k13" 9 "0 -1 0"
-"j14" 9 "0 -1 0"
-"k14" 9 "0 -1 0"
-"k8" 5 "0 -1 0"
-"k9" 5 "0 -1 0"
-"k7" 5 "0 -1 0"
-"m8" 4 "0 -1 0"
-"l14" 9 "0 -1 0"
-"i14" 9 "0 -1 0"
-"m12" 1 "0 -1 0"
-"l11" 2 "0 -1 0"
-"m11" 2 "0 -1 0"
-"m10" 2 "0 -1 0"
-"l10" 2 "0 -1 0"
-"k12" 3 "0 -1 0"
-"m16" 5 "0 -1 0"
-"l16" 5 "0 -1 0"
-"k16" 5 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"h11" 3 "0 -1 0"
-"f20" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"h16" 5 "0 -1 0"
-"f16" 4 "0 -1 0"
-"f15" 4 "0 -1 0"
-"f14" 5 "0 -1 0"
-"g14" 5 "0 -1 0"
-"e13" 4 "0 -1 0"
-"e12" 4 "0 -1 0"
-"e11" 4 "0 -1 0"
-"e10" 4 "0 -1 0"
-"e9" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"f9" 5 "0 -1 0"
-"f7" 5 "0 -1 0"
-"f8" 5 "0 -1 0"
-"f10" 5 "0 -1 0"
-"g7" 5 "0 -1 0"
-"h12" 3 "0 -1 0"
-"m14" 3 "0 -1 0"
-"a4" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"s8" 8 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"j7" 5 "0 -1 0"
-"i7" 5 "0 -1 0"
-"l8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"s12" 8 "0 -1 0"
-"t8" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"q7" 8 "0 -1 0"
-"p9" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"m9" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"o10" 4 "0 -1 0"
-"p10" 4 "0 -1 0"
-"q10" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"s14" 8 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"q9" 8 "0 -1 0"
-"p11" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"o12" 4 "0 -1 0"
-"p12" 4 "0 -1 0"
-"q12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"t12" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"s13" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"q11" 8 "0 -1 0"
-"p13" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"l9" 5 "0 -1 0"
-"n12" 5 "0 -1 0"
-"o14" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"q14" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"f12" 5 "0 -1 0"
-"t14" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"r15" 4 "0 -1 0"
-"q15" 8 "0 -1 0"
-"p15" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"n13" 5 "0 -1 0"
-"n16" 5 "0 -1 0"
-"o16" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"q16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"q13" 8 "0 -1 0"
-"t16" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"a9" 8 "0 -1 0"
-"a8" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"a7" 8 "0 -1 0"
-"d8" 4 "0 -1 0"
-"d9" 4 "0 -1 0"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"a13" 8 "0 -1 0"
-"a10" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"a11" 8 "0 -1 0"
-"d10" 4 "0 -1 0"
-"d11" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"a15" 8 "0 -1 0"
-"a12" 4 "0 -1 0"
-"b12" 4 "0 -1 0"
-"c10" 8 "0 -1 0"
-"d12" 4 "0 -1 0"
-"d13" 4 "0 -1 0"
-"c13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"s16" 8 "0 -1 0"
-"a14" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"c12" 8 "0 -1 0"
-"d14" 4 "0 -1 0"
-"e14" 4 "0 -1 0"
-"e15" 4 "0 -1 0"
-"d15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"s10" 8 "0 -1 0"
-"a16" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"c16" 8 "0 -1 0"
-"d16" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"f11" 5 "0 -1 0"
-"c14" 8 "0 -1 0"
-"c8" 8 "0 -1 0"
-"f13" 5 "0 -1 0"
-"g15" 5 "0 -1 0"
-"g16" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"j16" 5 "0 -1 0"
-"n15" 5 "0 -1 0"
-"n14" 5 "0 -1 0"
-"h7" 5 "0 -1 0"
+"k10" 9 0
+"k11" 9 0
+"k13" 9 0
+"j14" 9 0
+"k14" 9 0
+"k8" 5 0
+"k9" 5 0
+"k7" 5 0
+"m8" 4 0
+"l14" 9 0
+"i14" 9 0
+"m12" 1 1
+"l11" 2 0
+"m11" 2 0
+"m10" 2 0
+"l10" 2 0
+"k12" 3 0
+"m16" 5 0
+"l16" 5 0
+"k16" 5 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"b4" 4 0
+"h11" 3 0
+"f20" 4 0
+"f19" 4 0
+"f17" 4 0
+"f18" 4 0
+"h16" 5 0
+"f16" 4 0
+"f15" 4 0
+"f14" 5 0
+"g14" 5 0
+"e13" 4 0
+"e12" 4 0
+"e11" 4 0
+"e10" 4 0
+"e9" 4 0
+"e8" 4 0
+"e7" 4 0
+"f9" 5 0
+"f7" 5 0
+"f8" 5 0
+"f10" 5 0
+"g7" 5 0
+"h12" 3 0
+"m14" 3 0
+"a4" 4 0
+"a3" 4 0
+"b3" 4 0
+"c3" 4 0
+"d3" 4 0
+"e3" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"p3" 4 0
+"q3" 4 0
+"r3" 4 0
+"s3" 4 0
+"t3" 4 0
+"t2" 4 0
+"s2" 4 0
+"r2" 4 0
+"q2" 4 0
+"p2" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"e2" 4 0
+"d2" 4 0
+"c2" 4 0
+"b2" 4 0
+"a2" 4 0
+"a1" 4 0
+"b1" 4 0
+"c1" 4 0
+"d1" 4 0
+"e1" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"p1" 4 0
+"q1" 4 0
+"r1" 4 0
+"s1" 4 0
+"t1" 4 0
+"t4" 4 0
+"s4" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"k5" 4 0
+"j5" 4 0
+"i5" 4 0
+"h5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"c5" 4 0
+"b5" 4 0
+"a5" 4 0
+"a6" 4 0
+"b6" 4 0
+"c6" 4 0
+"d6" 4 0
+"e6" 4 0
+"f6" 4 0
+"g6" 4 0
+"h6" 4 0
+"i6" 4 0
+"j6" 4 0
+"k6" 4 0
+"l6" 4 0
+"m6" 4 0
+"n6" 4 0
+"o6" 4 0
+"p6" 4 0
+"q6" 4 0
+"r6" 4 0
+"s6" 4 0
+"t6" 4 0
+"t5" 4 0
+"s5" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"l5" 4 0
+"t7" 4 0
+"s7" 4 0
+"r7" 4 0
+"s8" 8 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"m7" 4 0
+"l7" 4 0
+"j7" 5 0
+"i7" 5 0
+"l8" 4 0
+"n8" 4 0
+"o8" 4 0
+"p8" 4 0
+"q8" 4 0
+"r8" 4 0
+"s12" 8 0
+"t8" 4 0
+"t9" 4 0
+"s9" 4 0
+"r9" 4 0
+"q7" 8 0
+"p9" 4 0
+"o9" 4 0
+"m9" 5 0
+"n9" 5 0
+"o10" 4 0
+"p10" 4 0
+"q10" 4 0
+"r10" 4 0
+"s14" 8 0
+"t10" 4 0
+"t11" 4 0
+"s11" 4 0
+"r11" 4 0
+"q9" 8 0
+"p11" 4 0
+"o11" 4 0
+"n10" 5 0
+"n11" 5 0
+"o12" 4 0
+"p12" 4 0
+"q12" 4 0
+"r12" 4 0
+"t12" 4 0
+"t13" 4 0
+"s13" 4 0
+"r13" 4 0
+"q11" 8 0
+"p13" 4 0
+"o13" 4 0
+"l9" 5 0
+"n12" 5 0
+"o14" 4 0
+"p14" 4 0
+"q14" 4 0
+"r14" 4 0
+"f12" 5 0
+"t14" 4 0
+"t15" 4 0
+"s15" 4 0
+"r15" 4 0
+"q15" 8 0
+"p15" 4 0
+"o15" 4 0
+"n13" 5 0
+"n16" 5 0
+"o16" 4 0
+"p16" 4 0
+"q16" 4 0
+"r16" 4 0
+"q13" 8 0
+"t16" 4 0
+"t17" 4 0
+"s17" 4 0
+"r17" 4 0
+"q17" 4 0
+"p17" 4 0
+"o17" 4 0
+"n17" 4 0
+"m17" 4 0
+"l17" 4 0
+"k17" 4 0
+"j17" 4 0
+"i17" 4 0
+"h17" 4 0
+"g17" 4 0
+"g18" 4 0
+"h18" 4 0
+"i18" 4 0
+"j18" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"p18" 4 0
+"q18" 4 0
+"r18" 4 0
+"s18" 4 0
+"t18" 4 0
+"t19" 4 0
+"s19" 4 0
+"r19" 4 0
+"q19" 4 0
+"p19" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"t20" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"a9" 8 0
+"a8" 4 0
+"b8" 4 0
+"a7" 8 0
+"d8" 4 0
+"d9" 4 0
+"c9" 4 0
+"b9" 4 0
+"a13" 8 0
+"a10" 4 0
+"b10" 4 0
+"a11" 8 0
+"d10" 4 0
+"d11" 4 0
+"c11" 4 0
+"b11" 4 0
+"a15" 8 0
+"a12" 4 0
+"b12" 4 0
+"c10" 8 0
+"d12" 4 0
+"d13" 4 0
+"c13" 4 0
+"b13" 4 0
+"s16" 8 0
+"a14" 4 0
+"b14" 4 0
+"c12" 8 0
+"d14" 4 0
+"e14" 4 0
+"e15" 4 0
+"d15" 4 0
+"c15" 4 0
+"b15" 4 0
+"s10" 8 0
+"a16" 4 0
+"b16" 4 0
+"c16" 8 0
+"d16" 4 0
+"e16" 4 0
+"e17" 4 0
+"d17" 4 0
+"c17" 4 0
+"b17" 4 0
+"a17" 4 0
+"a18" 4 0
+"b18" 4 0
+"c18" 4 0
+"d18" 4 0
+"e18" 4 0
+"e19" 4 0
+"d19" 4 0
+"c19" 4 0
+"b19" 4 0
+"a19" 4 0
+"a20" 4 0
+"b20" 4 0
+"c20" 4 0
+"d20" 4 0
+"e20" 4 0
+"f11" 5 0
+"c14" 8 0
+"c8" 8 0
+"f13" 5 0
+"g15" 5 0
+"g16" 5 0
+"i16" 5 0
+"j16" 5 0
+"n15" 5 0
+"n14" 5 0
+"h7" 5 0
index e5d7c2177d81dd246b1421def6e61bae5565714a..535811d542a0dcfa21456681e63ed0ed70e023f6 100644 (file)
 // bulldozer storage "level5" last updated 17-11-2015 21:42:14
 nextlevel = "level6"
-"a7" 4 "0 -1 0"
-"c18" 6 "0 -1 0"
-"a19" 4 "0 -1 0"
-"d17" 6 "0 -1 0"
-"c19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"q17" 6 "0 -1 0"
-"t19" 4 "0 -1 0"
-"e10" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"e9" 4 "0 -1 0"
-"e15" 4 "0 -1 0"
-"e13" 4 "0 -1 0"
-"e12" 4 "0 -1 0"
-"e11" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"e14" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"p9" 4 "0 -1 0"
-"p10" 4 "0 -1 0"
-"p11" 4 "0 -1 0"
-"p12" 4 "0 -1 0"
-"p13" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"c13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"b12" 4 "0 -1 0"
-"c12" 4 "0 -1 0"
-"d12" 4 "0 -1 0"
-"d11" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"a11" 4 "0 -1 0"
-"a10" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"c10" 4 "0 -1 0"
-"d10" 4 "0 -1 0"
-"d9" 4 "0 -1 0"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"a9" 4 "0 -1 0"
-"a8" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"c8" 4 "0 -1 0"
-"d8" 4 "0 -1 0"
-"d13" 4 "0 -1 0"
-"d14" 4 "0 -1 0"
-"c14" 4 "0 -1 0"
-"b14" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"d15" 4 "0 -1 0"
-"d16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"a1" 6 "0 -1 0"
-"d18" 4 "0 -1 0"
-"b2" 6 "0 -1 0"
-"b18" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"r18" 6 "0 -1 0"
-"s13" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"q13" 4 "0 -1 0"
-"q12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"t12" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"s11" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"q11" 4 "0 -1 0"
-"q10" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"q9" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"t8" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"s14" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"q14" 4 "0 -1 0"
-"q15" 4 "0 -1 0"
-"r15" 4 "0 -1 0"
-"s15" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"q16" 4 "0 -1 0"
-"g15" 1 "0 -1 0"
-"r17" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"m13" 2 "0 -1 0"
-"q18" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"t1" 6 "0 -1 0"
-"b3" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"d4" 6 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"q4" 6 "0 -1 0"
-"t2" 4 "0 -1 0"
-"r3" 6 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"c3" 6 "0 -1 0"
-"t3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"t20" 6 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"s2" 6 "0 -1 0"
-"c4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"s19" 6 "0 -1 0"
-"p4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"p15" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"f16" 5 "0 -1 0"
-"f13" 5 "0 -1 0"
-"f15" 5 "0 -1 0"
-"f14" 5 "0 -1 0"
-"f12" 5 "0 -1 0"
-"g12" 5 "0 -1 0"
-"h12" 5 "0 -1 0"
-"h11" 5 "0 -1 0"
-"g9" 5 "0 -1 0"
-"g8" 5 "0 -1 0"
-"g11" 5 "0 -1 0"
-"g10" 5 "0 -1 0"
-"h8" 5 "0 -1 0"
-"i8" 5 "0 -1 0"
-"j8" 5 "0 -1 0"
-"k8" 5 "0 -1 0"
-"k9" 5 "0 -1 0"
-"k10" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"n12" 5 "0 -1 0"
-"n13" 5 "0 -1 0"
-"n14" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"l14" 5 "0 -1 0"
-"j17" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"l13" 5 "0 -1 0"
-"l12" 5 "0 -1 0"
-"k12" 5 "0 -1 0"
-"j12" 5 "0 -1 0"
-"j13" 5 "0 -1 0"
-"j15" 5 "0 -1 0"
-"j14" 5 "0 -1 0"
-"j16" 5 "0 -1 0"
-"i16" 5 "0 -1 0"
-"h16" 5 "0 -1 0"
-"g16" 5 "0 -1 0"
-"f10" 4 "0 -1 0"
-"f9" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"f11" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"m8" 4 "0 -1 0"
-"l8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"m15" 4 "0 -1 0"
-"l15" 4 "0 -1 0"
-"k15" 4 "0 -1 0"
-"o10" 4 "0 -1 0"
-"k14" 4 "0 -1 0"
-"k13" 4 "0 -1 0"
-"k16" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"o12" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"o14" 4 "0 -1 0"
-"l16" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"m16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"n15" 4 "0 -1 0"
-"a20" 6 "0 -1 0"
-"b19" 6 "0 -1 0"
-"m12" 2 "0 -1 0"
-"m11" 2 "0 -1 0"
-"i14" 3 "0 -1 0"
-"h14" 3 "0 -1 0"
-"h13" 3 "0 -1 0"
-"i17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
+"a7" 4 0
+"c18" 6 0
+"a19" 4 0
+"d17" 6 0
+"c19" 4 0
+"d19" 4 0
+"e19" 4 0
+"f19" 4 0
+"g19" 4 0
+"h19" 4 0
+"i19" 4 0
+"j19" 4 0
+"k19" 4 0
+"l19" 4 0
+"m19" 4 0
+"n19" 4 0
+"o19" 4 0
+"p19" 4 0
+"q19" 4 0
+"r19" 4 0
+"q17" 6 0
+"t19" 4 0
+"e10" 4 0
+"e18" 4 0
+"p8" 4 0
+"e17" 4 0
+"e16" 4 0
+"e8" 4 0
+"e9" 4 0
+"e15" 4 0
+"e13" 4 0
+"e12" 4 0
+"e11" 4 0
+"e7" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"e14" 4 0
+"f17" 4 0
+"o7" 4 0
+"f6" 4 0
+"i6" 4 0
+"g6" 4 0
+"h6" 4 0
+"k6" 4 0
+"j6" 4 0
+"l6" 4 0
+"m6" 4 0
+"p7" 4 0
+"p9" 4 0
+"p10" 4 0
+"p11" 4 0
+"p12" 4 0
+"p13" 4 0
+"p14" 4 0
+"o15" 4 0
+"p16" 4 0
+"p17" 4 0
+"p18" 4 0
+"q7" 4 0
+"r7" 4 0
+"s7" 4 0
+"t7" 4 0
+"c13" 4 0
+"b13" 4 0
+"a13" 4 0
+"a12" 4 0
+"b12" 4 0
+"c12" 4 0
+"d12" 4 0
+"d11" 4 0
+"c11" 4 0
+"b11" 4 0
+"a11" 4 0
+"a10" 4 0
+"b10" 4 0
+"c10" 4 0
+"d10" 4 0
+"d9" 4 0
+"c9" 4 0
+"b9" 4 0
+"a9" 4 0
+"a8" 4 0
+"b8" 4 0
+"c8" 4 0
+"d8" 4 0
+"d13" 4 0
+"d14" 4 0
+"c14" 4 0
+"b14" 4 0
+"a14" 4 0
+"a15" 4 0
+"b15" 4 0
+"c15" 4 0
+"d15" 4 0
+"d16" 4 0
+"c16" 4 0
+"b16" 4 0
+"a16" 4 0
+"a17" 4 0
+"b17" 4 0
+"c17" 4 0
+"a1" 6 0
+"d18" 4 0
+"b2" 6 0
+"b18" 4 0
+"a18" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"p20" 4 0
+"q20" 4 0
+"r20" 4 0
+"s20" 4 0
+"r18" 6 0
+"s13" 4 0
+"r13" 4 0
+"q13" 4 0
+"q12" 4 0
+"r12" 4 0
+"s12" 4 0
+"t12" 4 0
+"t11" 4 0
+"s11" 4 0
+"r11" 4 0
+"q11" 4 0
+"q10" 4 0
+"r10" 4 0
+"s10" 4 0
+"t10" 4 0
+"t9" 4 0
+"s9" 4 0
+"r9" 4 0
+"q9" 4 0
+"q8" 4 0
+"r8" 4 0
+"s8" 4 0
+"t8" 4 0
+"t13" 4 0
+"t14" 4 0
+"s14" 4 0
+"r14" 4 0
+"q14" 4 0
+"q15" 4 0
+"r15" 4 0
+"s15" 4 0
+"t15" 4 0
+"t16" 4 0
+"s16" 4 0
+"r16" 4 0
+"q16" 4 0
+"g15" 1 1
+"r17" 4 0
+"s17" 4 0
+"t17" 4 0
+"t18" 4 0
+"s18" 4 0
+"m13" 2 0
+"q18" 4 0
+"g3" 4 0
+"f3" 4 0
+"e3" 4 0
+"d3" 4 0
+"t1" 6 0
+"b3" 4 0
+"a3" 4 0
+"a2" 4 0
+"d4" 6 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"k2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"q4" 6 0
+"t2" 4 0
+"r3" 6 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"c3" 6 0
+"t3" 4 0
+"s3" 4 0
+"t20" 6 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"k3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"s2" 6 0
+"c4" 4 0
+"b4" 4 0
+"a4" 4 0
+"a5" 4 0
+"b5" 4 0
+"c5" 4 0
+"d5" 4 0
+"e5" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"p5" 4 0
+"q5" 4 0
+"r5" 4 0
+"s5" 4 0
+"t5" 4 0
+"t4" 4 0
+"s4" 4 0
+"r4" 4 0
+"s19" 6 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"t6" 4 0
+"s6" 4 0
+"r6" 4 0
+"q6" 4 0
+"p6" 4 0
+"o6" 4 0
+"n6" 4 0
+"n7" 4 0
+"l7" 4 0
+"j7" 4 0
+"h7" 4 0
+"f7" 4 0
+"g7" 4 0
+"i7" 4 0
+"k7" 4 0
+"e6" 4 0
+"d6" 4 0
+"c6" 4 0
+"b6" 4 0
+"a6" 4 0
+"p15" 4 0
+"m7" 4 0
+"f16" 5 0
+"f13" 5 0
+"f15" 5 0
+"f14" 5 0
+"f12" 5 0
+"g12" 5 0
+"h12" 5 0
+"h11" 5 0
+"g9" 5 0
+"g8" 5 0
+"g11" 5 0
+"g10" 5 0
+"h8" 5 0
+"i8" 5 0
+"j8" 5 0
+"k8" 5 0
+"k9" 5 0
+"k10" 5 0
+"l9" 5 0
+"m9" 5 0
+"n9" 5 0
+"n10" 5 0
+"n11" 5 0
+"n12" 5 0
+"n13" 5 0
+"n14" 5 0
+"m14" 5 0
+"l14" 5 0
+"j17" 4 0
+"j18" 4 0
+"i18" 4 0
+"h18" 4 0
+"g18" 4 0
+"f18" 4 0
+"l13" 5 0
+"l12" 5 0
+"k12" 5 0
+"j12" 5 0
+"j13" 5 0
+"j15" 5 0
+"j14" 5 0
+"j16" 5 0
+"i16" 5 0
+"h16" 5 0
+"g16" 5 0
+"f10" 4 0
+"f9" 4 0
+"f8" 4 0
+"f11" 4 0
+"o9" 4 0
+"o8" 4 0
+"m8" 4 0
+"l8" 4 0
+"n8" 4 0
+"m15" 4 0
+"l15" 4 0
+"k15" 4 0
+"o10" 4 0
+"k14" 4 0
+"k13" 4 0
+"k16" 4 0
+"o11" 4 0
+"o12" 4 0
+"o13" 4 0
+"o14" 4 0
+"l16" 4 0
+"o16" 4 0
+"o17" 4 0
+"n17" 4 0
+"m17" 4 0
+"l17" 4 0
+"k17" 4 0
+"m16" 4 0
+"n16" 4 0
+"k18" 4 0
+"l18" 4 0
+"m18" 4 0
+"n18" 4 0
+"o18" 4 0
+"n15" 4 0
+"a20" 6 0
+"b19" 6 0
+"m12" 2 0
+"m11" 2 0
+"i14" 3 0
+"h14" 3 0
+"h13" 3 0
+"i17" 4 0
+"h17" 4 0
+"g17" 4 0
index 44a8137f4b00630343ada72d38b9ed465eca00cf..a849a97ad534d1297f9f163581048f41e83ba674 100644 (file)
 // bulldozer storage "level6" last updated 06-12-2015 16:11:35
 nextlevel = "level7"
-"g13" 5 "0 -1 0"
-"f13" 5 "0 -1 0"
-"f12" 5 "0 -1 0"
-"f11" 5 "0 -1 0"
-"f10" 5 "0 -1 0"
-"g10" 5 "0 -1 0"
-"i9" 5 "0 -1 0"
-"g9" 5 "0 -1 0"
-"h9" 5 "0 -1 0"
-"j9" 5 "0 -1 0"
-"k9" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"o12" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"o11" 5 "0 -1 0"
-"n14" 5 "0 -1 0"
-"o13" 5 "0 -1 0"
-"o14" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"l15" 5 "0 -1 0"
-"m15" 5 "0 -1 0"
-"g14" 5 "0 -1 0"
-"g15" 5 "0 -1 0"
-"h15" 5 "0 -1 0"
-"i15" 5 "0 -1 0"
-"j15" 5 "0 -1 0"
-"k15" 5 "0 -1 0"
-"i13" 5 "0 -1 0"
-"j13" 5 "0 -1 0"
-"k13" 5 "0 -1 0"
-"j10" 5 "0 -1 0"
-"j11" 5 "0 -1 0"
-"h10" 2 "0 -1 0"
-"i10" 2 "0 -1 0"
-"h11" 2 "0 -1 0"
-"i11" 2 "0 -1 0"
-"g12" 1 "0 -1 0"
-"h13" 3 "0 -1 0"
-"j12" 3 "0 -1 0"
-"l11" 3 "0 -1 0"
-"m12" 3 "0 -1 0"
-"b2" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"f5" 6 "0 -1 0"
-"e5" 6 "0 -1 0"
-"d5" 6 "0 -1 0"
-"c5" 6 "0 -1 0"
-"b5" 6 "0 -1 0"
-"a5" 6 "0 -1 0"
-"a4" 6 "0 -1 0"
-"b4" 6 "0 -1 0"
-"c4" 6 "0 -1 0"
-"d4" 6 "0 -1 0"
-"e4" 6 "0 -1 0"
-"f4" 6 "0 -1 0"
-"g4" 6 "0 -1 0"
-"h4" 6 "0 -1 0"
-"i4" 6 "0 -1 0"
-"j4" 6 "0 -1 0"
-"k4" 6 "0 -1 0"
-"l4" 6 "0 -1 0"
-"m4" 6 "0 -1 0"
-"n4" 6 "0 -1 0"
-"o4" 6 "0 -1 0"
-"p4" 6 "0 -1 0"
-"q4" 6 "0 -1 0"
-"r4" 6 "0 -1 0"
-"s4" 6 "0 -1 0"
-"t4" 6 "0 -1 0"
-"t3" 6 "0 -1 0"
-"t2" 6 "0 -1 0"
-"t1" 6 "0 -1 0"
-"s1" 6 "0 -1 0"
-"r1" 6 "0 -1 0"
-"q1" 6 "0 -1 0"
-"p1" 6 "0 -1 0"
-"o1" 6 "0 -1 0"
-"n1" 6 "0 -1 0"
-"m1" 6 "0 -1 0"
-"l1" 6 "0 -1 0"
-"k1" 6 "0 -1 0"
-"j1" 6 "0 -1 0"
-"i1" 6 "0 -1 0"
-"h1" 6 "0 -1 0"
-"g1" 6 "0 -1 0"
-"f1" 6 "0 -1 0"
-"e1" 6 "0 -1 0"
-"d1" 6 "0 -1 0"
-"c1" 6 "0 -1 0"
-"b1" 6 "0 -1 0"
-"a1" 6 "0 -1 0"
-"a2" 6 "0 -1 0"
-"a3" 6 "0 -1 0"
-"d2" 6 "0 -1 0"
-"e2" 6 "0 -1 0"
-"f2" 6 "0 -1 0"
-"g2" 6 "0 -1 0"
-"h2" 6 "0 -1 0"
-"i2" 6 "0 -1 0"
-"j2" 6 "0 -1 0"
-"k2" 6 "0 -1 0"
-"l2" 6 "0 -1 0"
-"m2" 6 "0 -1 0"
-"n2" 6 "0 -1 0"
-"o2" 6 "0 -1 0"
-"p2" 6 "0 -1 0"
-"q2" 6 "0 -1 0"
-"q3" 6 "0 -1 0"
-"p3" 6 "0 -1 0"
-"o3" 6 "0 -1 0"
-"n3" 6 "0 -1 0"
-"m3" 6 "0 -1 0"
-"l3" 6 "0 -1 0"
-"k3" 6 "0 -1 0"
-"j3" 6 "0 -1 0"
-"i3" 6 "0 -1 0"
-"h3" 6 "0 -1 0"
-"g3" 6 "0 -1 0"
-"f3" 6 "0 -1 0"
-"e3" 6 "0 -1 0"
-"d3" 6 "0 -1 0"
-"t5" 6 "0 -1 0"
-"s5" 6 "0 -1 0"
-"r5" 6 "0 -1 0"
-"q5" 6 "0 -1 0"
-"p5" 6 "0 -1 0"
-"o5" 6 "0 -1 0"
-"n5" 6 "0 -1 0"
-"m5" 6 "0 -1 0"
-"l5" 6 "0 -1 0"
-"k5" 6 "0 -1 0"
-"j5" 6 "0 -1 0"
-"i5" 6 "0 -1 0"
-"h5" 6 "0 -1 0"
-"g5" 6 "0 -1 0"
-"g6" 6 "0 -1 0"
-"f6" 6 "0 -1 0"
-"e6" 6 "0 -1 0"
-"d6" 6 "0 -1 0"
-"c6" 6 "0 -1 0"
-"b6" 6 "0 -1 0"
-"a6" 6 "0 -1 0"
-"a7" 6 "0 -1 0"
-"b7" 6 "0 -1 0"
-"c7" 6 "0 -1 0"
-"d7" 6 "0 -1 0"
-"e7" 6 "0 -1 0"
-"f7" 6 "0 -1 0"
-"g7" 6 "0 -1 0"
-"h7" 6 "0 -1 0"
-"i7" 6 "0 -1 0"
-"j7" 6 "0 -1 0"
-"k7" 6 "0 -1 0"
-"l7" 6 "0 -1 0"
-"m7" 6 "0 -1 0"
-"n7" 6 "0 -1 0"
-"o7" 6 "0 -1 0"
-"p7" 6 "0 -1 0"
-"q7" 6 "0 -1 0"
-"r7" 6 "0 -1 0"
-"s7" 6 "0 -1 0"
-"t7" 6 "0 -1 0"
-"t6" 6 "0 -1 0"
-"s6" 6 "0 -1 0"
-"r6" 6 "0 -1 0"
-"q6" 6 "0 -1 0"
-"p6" 6 "0 -1 0"
-"o6" 6 "0 -1 0"
-"n6" 6 "0 -1 0"
-"m6" 6 "0 -1 0"
-"l6" 6 "0 -1 0"
-"k6" 6 "0 -1 0"
-"j6" 6 "0 -1 0"
-"i6" 6 "0 -1 0"
-"h6" 6 "0 -1 0"
-"t8" 6 "0 -1 0"
-"s8" 6 "0 -1 0"
-"r8" 6 "0 -1 0"
-"q8" 6 "0 -1 0"
-"p8" 6 "0 -1 0"
-"o8" 6 "0 -1 0"
-"n8" 6 "0 -1 0"
-"m8" 6 "0 -1 0"
-"l8" 6 "0 -1 0"
-"k8" 6 "0 -1 0"
-"j8" 6 "0 -1 0"
-"i8" 6 "0 -1 0"
-"h8" 6 "0 -1 0"
-"g8" 6 "0 -1 0"
-"f8" 6 "0 -1 0"
-"e8" 6 "0 -1 0"
-"d8" 6 "0 -1 0"
-"c8" 6 "0 -1 0"
-"b8" 6 "0 -1 0"
-"a8" 6 "0 -1 0"
-"a9" 6 "0 -1 0"
-"b9" 6 "0 -1 0"
-"c9" 6 "0 -1 0"
-"d9" 6 "0 -1 0"
-"e9" 6 "0 -1 0"
-"f9" 6 "0 -1 0"
-"e10" 6 "0 -1 0"
-"d10" 6 "0 -1 0"
-"c10" 6 "0 -1 0"
-"b10" 6 "0 -1 0"
-"a10" 6 "0 -1 0"
-"a11" 6 "0 -1 0"
-"b11" 6 "0 -1 0"
-"c11" 6 "0 -1 0"
-"d11" 6 "0 -1 0"
-"e11" 6 "0 -1 0"
-"e12" 6 "0 -1 0"
-"d12" 6 "0 -1 0"
-"c12" 6 "0 -1 0"
-"b12" 6 "0 -1 0"
-"a12" 6 "0 -1 0"
-"a13" 6 "0 -1 0"
-"b13" 6 "0 -1 0"
-"c13" 6 "0 -1 0"
-"d13" 6 "0 -1 0"
-"e13" 6 "0 -1 0"
-"e14" 6 "0 -1 0"
-"d14" 6 "0 -1 0"
-"c14" 6 "0 -1 0"
-"b14" 6 "0 -1 0"
-"a14" 6 "0 -1 0"
-"a15" 6 "0 -1 0"
-"b15" 6 "0 -1 0"
-"c15" 6 "0 -1 0"
-"d15" 6 "0 -1 0"
-"e15" 6 "0 -1 0"
-"f15" 6 "0 -1 0"
-"f14" 6 "0 -1 0"
-"f16" 6 "0 -1 0"
-"e16" 6 "0 -1 0"
-"d16" 6 "0 -1 0"
-"c16" 6 "0 -1 0"
-"b16" 6 "0 -1 0"
-"a16" 6 "0 -1 0"
-"a17" 6 "0 -1 0"
-"b17" 6 "0 -1 0"
-"c17" 6 "0 -1 0"
-"d17" 6 "0 -1 0"
-"e17" 6 "0 -1 0"
-"f17" 6 "0 -1 0"
-"g17" 6 "0 -1 0"
-"h17" 6 "0 -1 0"
-"i17" 6 "0 -1 0"
-"j17" 6 "0 -1 0"
-"k17" 6 "0 -1 0"
-"l17" 6 "0 -1 0"
-"m17" 6 "0 -1 0"
-"n17" 6 "0 -1 0"
-"o17" 6 "0 -1 0"
-"p17" 6 "0 -1 0"
-"q17" 6 "0 -1 0"
-"r17" 6 "0 -1 0"
-"s17" 6 "0 -1 0"
-"t17" 6 "0 -1 0"
-"t16" 6 "0 -1 0"
-"s16" 6 "0 -1 0"
-"r16" 6 "0 -1 0"
-"q16" 6 "0 -1 0"
-"p16" 6 "0 -1 0"
-"o16" 6 "0 -1 0"
-"n16" 6 "0 -1 0"
-"m16" 6 "0 -1 0"
-"l16" 6 "0 -1 0"
-"k16" 6 "0 -1 0"
-"j16" 6 "0 -1 0"
-"i16" 6 "0 -1 0"
-"h16" 6 "0 -1 0"
-"g16" 6 "0 -1 0"
-"n15" 6 "0 -1 0"
-"o15" 6 "0 -1 0"
-"p15" 6 "0 -1 0"
-"q15" 6 "0 -1 0"
-"r15" 6 "0 -1 0"
-"s15" 6 "0 -1 0"
-"t15" 6 "0 -1 0"
-"t14" 6 "0 -1 0"
-"s14" 6 "0 -1 0"
-"r14" 6 "0 -1 0"
-"q14" 6 "0 -1 0"
-"p14" 6 "0 -1 0"
-"p13" 6 "0 -1 0"
-"q13" 6 "0 -1 0"
-"r13" 6 "0 -1 0"
-"s13" 6 "0 -1 0"
-"t13" 6 "0 -1 0"
-"t12" 6 "0 -1 0"
-"s12" 6 "0 -1 0"
-"r12" 6 "0 -1 0"
-"q12" 6 "0 -1 0"
-"p12" 6 "0 -1 0"
-"p11" 6 "0 -1 0"
-"q11" 6 "0 -1 0"
-"r11" 6 "0 -1 0"
-"s11" 6 "0 -1 0"
-"t11" 6 "0 -1 0"
-"t10" 6 "0 -1 0"
-"s10" 6 "0 -1 0"
-"r10" 6 "0 -1 0"
-"q10" 6 "0 -1 0"
-"p10" 6 "0 -1 0"
-"o10" 6 "0 -1 0"
-"o9" 6 "0 -1 0"
-"p9" 6 "0 -1 0"
-"q9" 6 "0 -1 0"
-"r9" 6 "0 -1 0"
-"s9" 6 "0 -1 0"
-"t9" 6 "0 -1 0"
-"t18" 6 "0 -1 0"
-"t19" 6 "0 -1 0"
-"t20" 6 "0 -1 0"
-"s20" 6 "0 -1 0"
-"r20" 6 "0 -1 0"
-"q20" 6 "0 -1 0"
-"p20" 6 "0 -1 0"
-"o20" 6 "0 -1 0"
-"n20" 6 "0 -1 0"
-"m20" 6 "0 -1 0"
-"l20" 6 "0 -1 0"
-"k20" 6 "0 -1 0"
-"j20" 6 "0 -1 0"
-"i20" 6 "0 -1 0"
-"h20" 6 "0 -1 0"
-"g20" 6 "0 -1 0"
-"f20" 6 "0 -1 0"
-"e20" 6 "0 -1 0"
-"d20" 6 "0 -1 0"
-"c20" 6 "0 -1 0"
-"b20" 6 "0 -1 0"
-"a20" 6 "0 -1 0"
-"a19" 6 "0 -1 0"
-"a18" 6 "0 -1 0"
-"d19" 6 "0 -1 0"
-"e19" 6 "0 -1 0"
-"f19" 6 "0 -1 0"
-"g19" 6 "0 -1 0"
-"h19" 6 "0 -1 0"
-"i19" 6 "0 -1 0"
-"j19" 6 "0 -1 0"
-"k19" 6 "0 -1 0"
-"l19" 6 "0 -1 0"
-"m19" 6 "0 -1 0"
-"n19" 6 "0 -1 0"
-"o19" 6 "0 -1 0"
-"p19" 6 "0 -1 0"
-"q19" 6 "0 -1 0"
-"q18" 6 "0 -1 0"
-"p18" 6 "0 -1 0"
-"o18" 6 "0 -1 0"
-"n18" 6 "0 -1 0"
-"m18" 6 "0 -1 0"
-"l18" 6 "0 -1 0"
-"k18" 6 "0 -1 0"
-"j18" 6 "0 -1 0"
-"i18" 6 "0 -1 0"
-"h18" 6 "0 -1 0"
-"g18" 6 "0 -1 0"
-"f18" 6 "0 -1 0"
-"e18" 6 "0 -1 0"
-"d18" 6 "0 -1 0"
+"g13" 5 0
+"f13" 5 0
+"f12" 5 0
+"f11" 5 0
+"f10" 5 0
+"g10" 5 0
+"i9" 5 0
+"g9" 5 0
+"h9" 5 0
+"j9" 5 0
+"k9" 5 0
+"l9" 5 0
+"m9" 5 0
+"n9" 5 0
+"n10" 5 0
+"o12" 5 0
+"n11" 5 0
+"o11" 5 0
+"n14" 5 0
+"o13" 5 0
+"o14" 5 0
+"m14" 5 0
+"l15" 5 0
+"m15" 5 0
+"g14" 5 0
+"g15" 5 0
+"h15" 5 0
+"i15" 5 0
+"j15" 5 0
+"k15" 5 0
+"i13" 5 0
+"j13" 5 0
+"k13" 5 0
+"j10" 5 0
+"j11" 5 0
+"h10" 2 0
+"i10" 2 0
+"h11" 2 0
+"i11" 2 0
+"g12" 1 1
+"h13" 3 0
+"j12" 3 0
+"l11" 3 0
+"m12" 3 0
+"b2" 4 0
+"b3" 4 0
+"c3" 4 0
+"c2" 4 0
+"b19" 4 0
+"b18" 4 0
+"c18" 4 0
+"c19" 4 0
+"r19" 4 0
+"r18" 4 0
+"s18" 4 0
+"s19" 4 0
+"r2" 4 0
+"r3" 4 0
+"s3" 4 0
+"s2" 4 0
+"f5" 6 0
+"e5" 6 0
+"d5" 6 0
+"c5" 6 0
+"b5" 6 0
+"a5" 6 0
+"a4" 6 0
+"b4" 6 0
+"c4" 6 0
+"d4" 6 0
+"e4" 6 0
+"f4" 6 0
+"g4" 6 0
+"h4" 6 0
+"i4" 6 0
+"j4" 6 0
+"k4" 6 0
+"l4" 6 0
+"m4" 6 0
+"n4" 6 0
+"o4" 6 0
+"p4" 6 0
+"q4" 6 0
+"r4" 6 0
+"s4" 6 0
+"t4" 6 0
+"t3" 6 0
+"t2" 6 0
+"t1" 6 0
+"s1" 6 0
+"r1" 6 0
+"q1" 6 0
+"p1" 6 0
+"o1" 6 0
+"n1" 6 0
+"m1" 6 0
+"l1" 6 0
+"k1" 6 0
+"j1" 6 0
+"i1" 6 0
+"h1" 6 0
+"g1" 6 0
+"f1" 6 0
+"e1" 6 0
+"d1" 6 0
+"c1" 6 0
+"b1" 6 0
+"a1" 6 0
+"a2" 6 0
+"a3" 6 0
+"d2" 6 0
+"e2" 6 0
+"f2" 6 0
+"g2" 6 0
+"h2" 6 0
+"i2" 6 0
+"j2" 6 0
+"k2" 6 0
+"l2" 6 0
+"m2" 6 0
+"n2" 6 0
+"o2" 6 0
+"p2" 6 0
+"q2" 6 0
+"q3" 6 0
+"p3" 6 0
+"o3" 6 0
+"n3" 6 0
+"m3" 6 0
+"l3" 6 0
+"k3" 6 0
+"j3" 6 0
+"i3" 6 0
+"h3" 6 0
+"g3" 6 0
+"f3" 6 0
+"e3" 6 0
+"d3" 6 0
+"t5" 6 0
+"s5" 6 0
+"r5" 6 0
+"q5" 6 0
+"p5" 6 0
+"o5" 6 0
+"n5" 6 0
+"m5" 6 0
+"l5" 6 0
+"k5" 6 0
+"j5" 6 0
+"i5" 6 0
+"h5" 6 0
+"g5" 6 0
+"g6" 6 0
+"f6" 6 0
+"e6" 6 0
+"d6" 6 0
+"c6" 6 0
+"b6" 6 0
+"a6" 6 0
+"a7" 6 0
+"b7" 6 0
+"c7" 6 0
+"d7" 6 0
+"e7" 6 0
+"f7" 6 0
+"g7" 6 0
+"h7" 6 0
+"i7" 6 0
+"j7" 6 0
+"k7" 6 0
+"l7" 6 0
+"m7" 6 0
+"n7" 6 0
+"o7" 6 0
+"p7" 6 0
+"q7" 6 0
+"r7" 6 0
+"s7" 6 0
+"t7" 6 0
+"t6" 6 0
+"s6" 6 0
+"r6" 6 0
+"q6" 6 0
+"p6" 6 0
+"o6" 6 0
+"n6" 6 0
+"m6" 6 0
+"l6" 6 0
+"k6" 6 0
+"j6" 6 0
+"i6" 6 0
+"h6" 6 0
+"t8" 6 0
+"s8" 6 0
+"r8" 6 0
+"q8" 6 0
+"p8" 6 0
+"o8" 6 0
+"n8" 6 0
+"m8" 6 0
+"l8" 6 0
+"k8" 6 0
+"j8" 6 0
+"i8" 6 0
+"h8" 6 0
+"g8" 6 0
+"f8" 6 0
+"e8" 6 0
+"d8" 6 0
+"c8" 6 0
+"b8" 6 0
+"a8" 6 0
+"a9" 6 0
+"b9" 6 0
+"c9" 6 0
+"d9" 6 0
+"e9" 6 0
+"f9" 6 0
+"e10" 6 0
+"d10" 6 0
+"c10" 6 0
+"b10" 6 0
+"a10" 6 0
+"a11" 6 0
+"b11" 6 0
+"c11" 6 0
+"d11" 6 0
+"e11" 6 0
+"e12" 6 0
+"d12" 6 0
+"c12" 6 0
+"b12" 6 0
+"a12" 6 0
+"a13" 6 0
+"b13" 6 0
+"c13" 6 0
+"d13" 6 0
+"e13" 6 0
+"e14" 6 0
+"d14" 6 0
+"c14" 6 0
+"b14" 6 0
+"a14" 6 0
+"a15" 6 0
+"b15" 6 0
+"c15" 6 0
+"d15" 6 0
+"e15" 6 0
+"f15" 6 0
+"f14" 6 0
+"f16" 6 0
+"e16" 6 0
+"d16" 6 0
+"c16" 6 0
+"b16" 6 0
+"a16" 6 0
+"a17" 6 0
+"b17" 6 0
+"c17" 6 0
+"d17" 6 0
+"e17" 6 0
+"f17" 6 0
+"g17" 6 0
+"h17" 6 0
+"i17" 6 0
+"j17" 6 0
+"k17" 6 0
+"l17" 6 0
+"m17" 6 0
+"n17" 6 0
+"o17" 6 0
+"p17" 6 0
+"q17" 6 0
+"r17" 6 0
+"s17" 6 0
+"t17" 6 0
+"t16" 6 0
+"s16" 6 0
+"r16" 6 0
+"q16" 6 0
+"p16" 6 0
+"o16" 6 0
+"n16" 6 0
+"m16" 6 0
+"l16" 6 0
+"k16" 6 0
+"j16" 6 0
+"i16" 6 0
+"h16" 6 0
+"g16" 6 0
+"n15" 6 0
+"o15" 6 0
+"p15" 6 0
+"q15" 6 0
+"r15" 6 0
+"s15" 6 0
+"t15" 6 0
+"t14" 6 0
+"s14" 6 0
+"r14" 6 0
+"q14" 6 0
+"p14" 6 0
+"p13" 6 0
+"q13" 6 0
+"r13" 6 0
+"s13" 6 0
+"t13" 6 0
+"t12" 6 0
+"s12" 6 0
+"r12" 6 0
+"q12" 6 0
+"p12" 6 0
+"p11" 6 0
+"q11" 6 0
+"r11" 6 0
+"s11" 6 0
+"t11" 6 0
+"t10" 6 0
+"s10" 6 0
+"r10" 6 0
+"q10" 6 0
+"p10" 6 0
+"o10" 6 0
+"o9" 6 0
+"p9" 6 0
+"q9" 6 0
+"r9" 6 0
+"s9" 6 0
+"t9" 6 0
+"t18" 6 0
+"t19" 6 0
+"t20" 6 0
+"s20" 6 0
+"r20" 6 0
+"q20" 6 0
+"p20" 6 0
+"o20" 6 0
+"n20" 6 0
+"m20" 6 0
+"l20" 6 0
+"k20" 6 0
+"j20" 6 0
+"i20" 6 0
+"h20" 6 0
+"g20" 6 0
+"f20" 6 0
+"e20" 6 0
+"d20" 6 0
+"c20" 6 0
+"b20" 6 0
+"a20" 6 0
+"a19" 6 0
+"a18" 6 0
+"d19" 6 0
+"e19" 6 0
+"f19" 6 0
+"g19" 6 0
+"h19" 6 0
+"i19" 6 0
+"j19" 6 0
+"k19" 6 0
+"l19" 6 0
+"m19" 6 0
+"n19" 6 0
+"o19" 6 0
+"p19" 6 0
+"q19" 6 0
+"q18" 6 0
+"p18" 6 0
+"o18" 6 0
+"n18" 6 0
+"m18" 6 0
+"l18" 6 0
+"k18" 6 0
+"j18" 6 0
+"i18" 6 0
+"h18" 6 0
+"g18" 6 0
+"f18" 6 0
+"e18" 6 0
+"d18" 6 0
index 5f351c629c3823a9b6259d2dabd8bb688e593dd2..a6473ae0ea2354bc712af4c9445219e60e549b5f 100644 (file)
 // bulldozer storage "level7" last updated 06-12-2015 16:19:03
 nextlevel = "level8"
-"g10" 5 "0 -1 0"
-"g9" 5 "0 -1 0"
-"g8" 5 "0 -1 0"
-"g11" 5 "0 -1 0"
-"g12" 5 "0 -1 0"
-"h8" 5 "0 -1 0"
-"i8" 5 "0 -1 0"
-"j8" 5 "0 -1 0"
-"l8" 5 "0 -1 0"
-"k8" 5 "0 -1 0"
-"m8" 5 "0 -1 0"
-"n8" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"n10" 5 "0 -1 0"
-"n11" 5 "0 -1 0"
-"n12" 5 "0 -1 0"
-"m12" 5 "0 -1 0"
-"m13" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"h12" 5 "0 -1 0"
-"h13" 5 "0 -1 0"
-"h14" 5 "0 -1 0"
-"h15" 5 "0 -1 0"
-"i15" 5 "0 -1 0"
-"j15" 5 "0 -1 0"
-"k15" 5 "0 -1 0"
-"k14" 5 "0 -1 0"
-"l14" 5 "0 -1 0"
-"k12" 5 "0 -1 0"
-"k11" 5 "0 -1 0"
-"i12" 5 "0 -1 0"
-"i11" 5 "0 -1 0"
-"l10" 5 "0 -1 0"
-"j14" 1 "0 -1 0"
-"j13" 3 "0 -1 0"
-"i10" 3 "0 -1 0"
-"l9" 3 "0 -1 0"
-"h11" 2 "0 -1 0"
-"h10" 2 "0 -1 0"
-"h9" 2 "0 -1 0"
-"a19" 6 "0 -1 0"
-"b20" 6 "0 -1 0"
-"b18" 6 "0 -1 0"
-"a17" 6 "0 -1 0"
-"b16" 6 "0 -1 0"
-"a15" 6 "0 -1 0"
-"b14" 6 "0 -1 0"
-"a13" 6 "0 -1 0"
-"b12" 6 "0 -1 0"
-"a10" 11 "0 -1 0"
-"b10" 6 "0 -1 0"
-"a7" 6 "0 -1 0"
-"a9" 6 "0 -1 0"
-"b8" 6 "0 -1 0"
-"b6" 6 "0 -1 0"
-"a5" 6 "0 -1 0"
-"b4" 6 "0 -1 0"
-"a3" 6 "0 -1 0"
-"b2" 6 "0 -1 0"
-"a1" 6 "0 -1 0"
-"c1" 6 "0 -1 0"
-"d2" 6 "0 -1 0"
-"e1" 6 "0 -1 0"
-"c3" 6 "0 -1 0"
-"c5" 6 "0 -1 0"
-"c7" 6 "0 -1 0"
-"c9" 6 "0 -1 0"
-"c11" 6 "0 -1 0"
-"c13" 6 "0 -1 0"
-"c15" 6 "0 -1 0"
-"c17" 6 "0 -1 0"
-"c19" 6 "0 -1 0"
-"d20" 6 "0 -1 0"
-"d18" 6 "0 -1 0"
-"d16" 6 "0 -1 0"
-"d14" 6 "0 -1 0"
-"d12" 6 "0 -1 0"
-"d10" 6 "0 -1 0"
-"d8" 6 "0 -1 0"
-"d6" 6 "0 -1 0"
-"d4" 6 "0 -1 0"
-"e3" 6 "0 -1 0"
-"e9" 6 "0 -1 0"
-"e5" 6 "0 -1 0"
-"e7" 6 "0 -1 0"
-"e11" 6 "0 -1 0"
-"e13" 6 "0 -1 0"
-"e15" 6 "0 -1 0"
-"e17" 6 "0 -1 0"
-"e19" 6 "0 -1 0"
-"a20" 11 "0 -1 0"
-"b19" 11 "0 -1 0"
-"a18" 11 "0 -1 0"
-"a16" 11 "0 -1 0"
-"a14" 11 "0 -1 0"
-"a12" 11 "0 -1 0"
-"a8" 11 "0 -1 0"
-"a6" 11 "0 -1 0"
-"a4" 11 "0 -1 0"
-"a2" 11 "0 -1 0"
-"b1" 11 "0 -1 0"
-"b3" 11 "0 -1 0"
-"b5" 11 "0 -1 0"
-"b7" 11 "0 -1 0"
-"b9" 11 "0 -1 0"
-"b11" 11 "0 -1 0"
-"b13" 11 "0 -1 0"
-"b15" 11 "0 -1 0"
-"b17" 11 "0 -1 0"
-"c20" 11 "0 -1 0"
-"c18" 11 "0 -1 0"
-"c16" 11 "0 -1 0"
-"c14" 11 "0 -1 0"
-"c12" 11 "0 -1 0"
-"c10" 11 "0 -1 0"
-"c8" 11 "0 -1 0"
-"c6" 11 "0 -1 0"
-"c4" 11 "0 -1 0"
-"c2" 11 "0 -1 0"
-"d1" 11 "0 -1 0"
-"d3" 11 "0 -1 0"
-"d5" 11 "0 -1 0"
-"d7" 11 "0 -1 0"
-"d9" 11 "0 -1 0"
-"d11" 11 "0 -1 0"
-"d13" 11 "0 -1 0"
-"d15" 11 "0 -1 0"
-"d17" 11 "0 -1 0"
-"d19" 11 "0 -1 0"
-"e20" 11 "0 -1 0"
-"e18" 11 "0 -1 0"
-"e16" 11 "0 -1 0"
-"e14" 11 "0 -1 0"
-"e12" 11 "0 -1 0"
-"e10" 11 "0 -1 0"
-"e8" 11 "0 -1 0"
-"e6" 11 "0 -1 0"
-"e4" 11 "0 -1 0"
-"e2" 11 "0 -1 0"
-"a11" 6 "0 -1 0"
-"p1" 6 "0 -1 0"
-"p3" 6 "0 -1 0"
-"p5" 6 "0 -1 0"
-"p7" 6 "0 -1 0"
-"p9" 6 "0 -1 0"
-"p15" 6 "0 -1 0"
-"p11" 6 "0 -1 0"
-"p13" 6 "0 -1 0"
-"q20" 6 "0 -1 0"
-"p17" 6 "0 -1 0"
-"p19" 6 "0 -1 0"
-"q18" 6 "0 -1 0"
-"q16" 6 "0 -1 0"
-"q14" 6 "0 -1 0"
-"q12" 6 "0 -1 0"
-"q10" 6 "0 -1 0"
-"q8" 6 "0 -1 0"
-"q6" 6 "0 -1 0"
-"q4" 6 "0 -1 0"
-"q2" 6 "0 -1 0"
-"r1" 6 "0 -1 0"
-"r3" 6 "0 -1 0"
-"r5" 6 "0 -1 0"
-"r7" 6 "0 -1 0"
-"r9" 6 "0 -1 0"
-"r11" 6 "0 -1 0"
-"r13" 6 "0 -1 0"
-"r15" 6 "0 -1 0"
-"r17" 6 "0 -1 0"
-"r19" 6 "0 -1 0"
-"s20" 6 "0 -1 0"
-"s18" 6 "0 -1 0"
-"s16" 6 "0 -1 0"
-"s14" 6 "0 -1 0"
-"s12" 6 "0 -1 0"
-"s10" 6 "0 -1 0"
-"s8" 6 "0 -1 0"
-"s6" 6 "0 -1 0"
-"s4" 6 "0 -1 0"
-"s2" 6 "0 -1 0"
-"t1" 6 "0 -1 0"
-"t3" 6 "0 -1 0"
-"t5" 6 "0 -1 0"
-"t7" 6 "0 -1 0"
-"t9" 6 "0 -1 0"
-"t11" 6 "0 -1 0"
-"t13" 6 "0 -1 0"
-"t14" 11 "0 -1 0"
-"t17" 6 "0 -1 0"
-"t19" 6 "0 -1 0"
-"p20" 11 "0 -1 0"
-"p18" 11 "0 -1 0"
-"p16" 11 "0 -1 0"
-"p14" 11 "0 -1 0"
-"p12" 11 "0 -1 0"
-"p10" 11 "0 -1 0"
-"p8" 11 "0 -1 0"
-"p6" 11 "0 -1 0"
-"p4" 11 "0 -1 0"
-"p2" 11 "0 -1 0"
-"q1" 11 "0 -1 0"
-"q3" 11 "0 -1 0"
-"q5" 11 "0 -1 0"
-"q7" 11 "0 -1 0"
-"q9" 11 "0 -1 0"
-"q11" 11 "0 -1 0"
-"q13" 11 "0 -1 0"
-"q15" 11 "0 -1 0"
-"q17" 11 "0 -1 0"
-"q19" 11 "0 -1 0"
-"r20" 11 "0 -1 0"
-"r18" 11 "0 -1 0"
-"r16" 11 "0 -1 0"
-"r14" 11 "0 -1 0"
-"r12" 11 "0 -1 0"
-"r10" 11 "0 -1 0"
-"r8" 11 "0 -1 0"
-"r6" 11 "0 -1 0"
-"r4" 11 "0 -1 0"
-"r2" 11 "0 -1 0"
-"s1" 11 "0 -1 0"
-"s3" 11 "0 -1 0"
-"s5" 11 "0 -1 0"
-"s7" 11 "0 -1 0"
-"s9" 11 "0 -1 0"
-"s11" 11 "0 -1 0"
-"s13" 11 "0 -1 0"
-"s15" 11 "0 -1 0"
-"s17" 11 "0 -1 0"
-"s19" 11 "0 -1 0"
-"t20" 11 "0 -1 0"
-"t18" 11 "0 -1 0"
-"t16" 11 "0 -1 0"
-"t10" 11 "0 -1 0"
-"t12" 11 "0 -1 0"
-"t8" 11 "0 -1 0"
-"t6" 11 "0 -1 0"
-"t4" 11 "0 -1 0"
-"t2" 11 "0 -1 0"
-"t15" 6 "0 -1 0"
-"h18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"m16" 4 "0 -1 0"
-"l16" 4 "0 -1 0"
-"k16" 4 "0 -1 0"
-"j16" 4 "0 -1 0"
-"i16" 4 "0 -1 0"
-"h16" 4 "0 -1 0"
-"g16" 4 "0 -1 0"
-"f16" 4 "0 -1 0"
-"f15" 4 "0 -1 0"
-"g15" 4 "0 -1 0"
-"g14" 4 "0 -1 0"
-"f14" 4 "0 -1 0"
-"f13" 4 "0 -1 0"
-"g13" 4 "0 -1 0"
-"f12" 4 "0 -1 0"
-"f11" 4 "0 -1 0"
-"f10" 4 "0 -1 0"
-"f9" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"o9" 4 "0 -1 0"
-"o10" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"o12" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"n13" 4 "0 -1 0"
-"n14" 4 "0 -1 0"
-"o14" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"n15" 4 "0 -1 0"
-"m15" 4 "0 -1 0"
-"l15" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
+"g10" 5 0
+"g9" 5 0
+"g8" 5 0
+"g11" 5 0
+"g12" 5 0
+"h8" 5 0
+"i8" 5 0
+"j8" 5 0
+"l8" 5 0
+"k8" 5 0
+"m8" 5 0
+"n8" 5 0
+"n9" 5 0
+"n10" 5 0
+"n11" 5 0
+"n12" 5 0
+"m12" 5 0
+"m13" 5 0
+"m14" 5 0
+"h12" 5 0
+"h13" 5 0
+"h14" 5 0
+"h15" 5 0
+"i15" 5 0
+"j15" 5 0
+"k15" 5 0
+"k14" 5 0
+"l14" 5 0
+"k12" 5 0
+"k11" 5 0
+"i12" 5 0
+"i11" 5 0
+"l10" 5 0
+"j14" 1 1
+"j13" 3 0
+"i10" 3 0
+"l9" 3 0
+"h11" 2 0
+"h10" 2 0
+"h9" 2 0
+"a19" 6 0
+"b20" 6 0
+"b18" 6 0
+"a17" 6 0
+"b16" 6 0
+"a15" 6 0
+"b14" 6 0
+"a13" 6 0
+"b12" 6 0
+"a10" 11 0
+"b10" 6 0
+"a7" 6 0
+"a9" 6 0
+"b8" 6 0
+"b6" 6 0
+"a5" 6 0
+"b4" 6 0
+"a3" 6 0
+"b2" 6 0
+"a1" 6 0
+"c1" 6 0
+"d2" 6 0
+"e1" 6 0
+"c3" 6 0
+"c5" 6 0
+"c7" 6 0
+"c9" 6 0
+"c11" 6 0
+"c13" 6 0
+"c15" 6 0
+"c17" 6 0
+"c19" 6 0
+"d20" 6 0
+"d18" 6 0
+"d16" 6 0
+"d14" 6 0
+"d12" 6 0
+"d10" 6 0
+"d8" 6 0
+"d6" 6 0
+"d4" 6 0
+"e3" 6 0
+"e9" 6 0
+"e5" 6 0
+"e7" 6 0
+"e11" 6 0
+"e13" 6 0
+"e15" 6 0
+"e17" 6 0
+"e19" 6 0
+"a20" 11 0
+"b19" 11 0
+"a18" 11 0
+"a16" 11 0
+"a14" 11 0
+"a12" 11 0
+"a8" 11 0
+"a6" 11 0
+"a4" 11 0
+"a2" 11 0
+"b1" 11 0
+"b3" 11 0
+"b5" 11 0
+"b7" 11 0
+"b9" 11 0
+"b11" 11 0
+"b13" 11 0
+"b15" 11 0
+"b17" 11 0
+"c20" 11 0
+"c18" 11 0
+"c16" 11 0
+"c14" 11 0
+"c12" 11 0
+"c10" 11 0
+"c8" 11 0
+"c6" 11 0
+"c4" 11 0
+"c2" 11 0
+"d1" 11 0
+"d3" 11 0
+"d5" 11 0
+"d7" 11 0
+"d9" 11 0
+"d11" 11 0
+"d13" 11 0
+"d15" 11 0
+"d17" 11 0
+"d19" 11 0
+"e20" 11 0
+"e18" 11 0
+"e16" 11 0
+"e14" 11 0
+"e12" 11 0
+"e10" 11 0
+"e8" 11 0
+"e6" 11 0
+"e4" 11 0
+"e2" 11 0
+"a11" 6 0
+"p1" 6 0
+"p3" 6 0
+"p5" 6 0
+"p7" 6 0
+"p9" 6 0
+"p15" 6 0
+"p11" 6 0
+"p13" 6 0
+"q20" 6 0
+"p17" 6 0
+"p19" 6 0
+"q18" 6 0
+"q16" 6 0
+"q14" 6 0
+"q12" 6 0
+"q10" 6 0
+"q8" 6 0
+"q6" 6 0
+"q4" 6 0
+"q2" 6 0
+"r1" 6 0
+"r3" 6 0
+"r5" 6 0
+"r7" 6 0
+"r9" 6 0
+"r11" 6 0
+"r13" 6 0
+"r15" 6 0
+"r17" 6 0
+"r19" 6 0
+"s20" 6 0
+"s18" 6 0
+"s16" 6 0
+"s14" 6 0
+"s12" 6 0
+"s10" 6 0
+"s8" 6 0
+"s6" 6 0
+"s4" 6 0
+"s2" 6 0
+"t1" 6 0
+"t3" 6 0
+"t5" 6 0
+"t7" 6 0
+"t9" 6 0
+"t11" 6 0
+"t13" 6 0
+"t14" 11 0
+"t17" 6 0
+"t19" 6 0
+"p20" 11 0
+"p18" 11 0
+"p16" 11 0
+"p14" 11 0
+"p12" 11 0
+"p10" 11 0
+"p8" 11 0
+"p6" 11 0
+"p4" 11 0
+"p2" 11 0
+"q1" 11 0
+"q3" 11 0
+"q5" 11 0
+"q7" 11 0
+"q9" 11 0
+"q11" 11 0
+"q13" 11 0
+"q15" 11 0
+"q17" 11 0
+"q19" 11 0
+"r20" 11 0
+"r18" 11 0
+"r16" 11 0
+"r14" 11 0
+"r12" 11 0
+"r10" 11 0
+"r8" 11 0
+"r6" 11 0
+"r4" 11 0
+"r2" 11 0
+"s1" 11 0
+"s3" 11 0
+"s5" 11 0
+"s7" 11 0
+"s9" 11 0
+"s11" 11 0
+"s13" 11 0
+"s15" 11 0
+"s17" 11 0
+"s19" 11 0
+"t20" 11 0
+"t18" 11 0
+"t16" 11 0
+"t10" 11 0
+"t12" 11 0
+"t8" 11 0
+"t6" 11 0
+"t4" 11 0
+"t2" 11 0
+"t15" 6 0
+"h18" 4 0
+"g18" 4 0
+"f18" 4 0
+"f17" 4 0
+"g17" 4 0
+"h17" 4 0
+"i17" 4 0
+"j17" 4 0
+"k17" 4 0
+"l17" 4 0
+"m17" 4 0
+"n17" 4 0
+"o17" 4 0
+"o16" 4 0
+"n16" 4 0
+"m16" 4 0
+"l16" 4 0
+"k16" 4 0
+"j16" 4 0
+"i16" 4 0
+"h16" 4 0
+"g16" 4 0
+"f16" 4 0
+"f15" 4 0
+"g15" 4 0
+"g14" 4 0
+"f14" 4 0
+"f13" 4 0
+"g13" 4 0
+"f12" 4 0
+"f11" 4 0
+"f10" 4 0
+"f9" 4 0
+"f8" 4 0
+"f7" 4 0
+"g7" 4 0
+"h7" 4 0
+"i7" 4 0
+"j7" 4 0
+"k7" 4 0
+"l7" 4 0
+"m7" 4 0
+"n7" 4 0
+"o7" 4 0
+"o6" 4 0
+"n6" 4 0
+"m6" 4 0
+"l6" 4 0
+"k6" 4 0
+"j6" 4 0
+"i6" 4 0
+"h6" 4 0
+"g6" 4 0
+"f6" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"o8" 4 0
+"o9" 4 0
+"o10" 4 0
+"o11" 4 0
+"o12" 4 0
+"o13" 4 0
+"n13" 4 0
+"n14" 4 0
+"o14" 4 0
+"o15" 4 0
+"n15" 4 0
+"m15" 4 0
+"l15" 4 0
+"o18" 4 0
+"n18" 4 0
+"m18" 4 0
+"l18" 4 0
+"k18" 4 0
+"j18" 4 0
+"i18" 4 0
+"i19" 4 0
+"h19" 4 0
+"g19" 4 0
+"f19" 4 0
+"f20" 4 0
+"g20" 4 0
+"h20" 4 0
+"i20" 4 0
+"j20" 4 0
+"k20" 4 0
+"l20" 4 0
+"m20" 4 0
+"n20" 4 0
+"o20" 4 0
+"o19" 4 0
+"n19" 4 0
+"m19" 4 0
+"l19" 4 0
+"k19" 4 0
+"j19" 4 0
index 2d461a0b2cef50bda178df78e68880e98b6585f5..6d616e1e313530252d5ca3d709debb14b5bf30d9 100644 (file)
 // bulldozer storage "level8" last updated 06-12-2015 16:23:34
 nextlevel = "level9"
-"e13" 5 "0 -1 0"
-"e12" 5 "0 -1 0"
-"e11" 5 "0 -1 0"
-"e10" 5 "0 -1 0"
-"e9" 5 "0 -1 0"
-"f9" 5 "0 -1 0"
-"g9" 5 "0 -1 0"
-"h9" 5 "0 -1 0"
-"i10" 5 "0 -1 0"
-"i9" 5 "0 -1 0"
-"i11" 5 "0 -1 0"
-"j11" 5 "0 -1 0"
-"k11" 5 "0 -1 0"
-"l11" 5 "0 -1 0"
-"l10" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"n9" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"o9" 5 "0 -1 0"
-"o10" 5 "0 -1 0"
-"p10" 5 "0 -1 0"
-"p11" 5 "0 -1 0"
-"p12" 5 "0 -1 0"
-"o13" 5 "0 -1 0"
-"p13" 5 "0 -1 0"
-"o14" 5 "0 -1 0"
-"n14" 5 "0 -1 0"
-"l14" 5 "0 -1 0"
-"f14" 5 "0 -1 0"
-"g14" 5 "0 -1 0"
-"h14" 5 "0 -1 0"
-"i14" 5 "0 -1 0"
-"j14" 5 "0 -1 0"
-"m14" 5 "0 -1 0"
-"k14" 5 "0 -1 0"
-"f13" 5 "0 -1 0"
-"j13" 5 "0 -1 0"
-"i12" 2 "0 -1 0"
-"l12" 2 "0 -1 0"
-"j12" 2 "0 -1 0"
-"k12" 2 "0 -1 0"
-"h13" 1 "0 -1 0"
-"g12" 3 "0 -1 0"
-"h11" 3 "0 -1 0"
-"m12" 3 "0 -1 0"
-"n11" 3 "0 -1 0"
-"d13" 8 "0 -1 0"
-"d15" 8 "0 -1 0"
-"b16" 8 "0 -1 0"
-"b14" 8 "0 -1 0"
-"b12" 8 "0 -1 0"
-"b10" 8 "0 -1 0"
-"b8" 8 "0 -1 0"
-"d11" 8 "0 -1 0"
-"d9" 8 "0 -1 0"
-"d7" 8 "0 -1 0"
-"q10" 8 "0 -1 0"
-"q8" 8 "0 -1 0"
-"s15" 8 "0 -1 0"
-"s7" 8 "0 -1 0"
-"s9" 8 "0 -1 0"
-"s11" 8 "0 -1 0"
-"s13" 8 "0 -1 0"
-"q12" 8 "0 -1 0"
-"q14" 8 "0 -1 0"
-"q16" 8 "0 -1 0"
-"h17" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"f17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"c14" 4 "0 -1 0"
-"d14" 4 "0 -1 0"
-"e14" 4 "0 -1 0"
-"e15" 4 "0 -1 0"
-"f15" 4 "0 -1 0"
-"g15" 4 "0 -1 0"
-"h15" 4 "0 -1 0"
-"i15" 4 "0 -1 0"
-"j15" 4 "0 -1 0"
-"k15" 4 "0 -1 0"
-"l15" 4 "0 -1 0"
-"m15" 4 "0 -1 0"
-"n15" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"p15" 4 "0 -1 0"
-"q15" 4 "0 -1 0"
-"r15" 4 "0 -1 0"
-"r14" 4 "0 -1 0"
-"s14" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"t13" 4 "0 -1 0"
-"t12" 4 "0 -1 0"
-"s12" 4 "0 -1 0"
-"r12" 4 "0 -1 0"
-"r11" 4 "0 -1 0"
-"q11" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"t10" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"t8" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"h7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"k5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"k6" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"h6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"a7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"c8" 4 "0 -1 0"
-"d8" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"g8" 4 "0 -1 0"
-"h8" 4 "0 -1 0"
-"i8" 4 "0 -1 0"
-"j8" 4 "0 -1 0"
-"k8" 4 "0 -1 0"
-"l8" 4 "0 -1 0"
-"m8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"p9" 4 "0 -1 0"
-"q9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"k9" 4 "0 -1 0"
-"j9" 4 "0 -1 0"
-"j10" 4 "0 -1 0"
-"k10" 4 "0 -1 0"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"a9" 4 "0 -1 0"
-"a8" 4 "0 -1 0"
-"a10" 4 "0 -1 0"
-"a11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"c10" 4 "0 -1 0"
-"d10" 4 "0 -1 0"
-"c12" 4 "0 -1 0"
-"d12" 4 "0 -1 0"
-"c13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"r13" 4 "0 -1 0"
-"q13" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"p17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"i16" 4 "0 -1 0"
-"h16" 4 "0 -1 0"
-"g16" 4 "0 -1 0"
-"f16" 4 "0 -1 0"
-"e16" 4 "0 -1 0"
-"d16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"j16" 4 "0 -1 0"
-"k16" 4 "0 -1 0"
-"l16" 4 "0 -1 0"
-"m16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"p16" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
-"p14" 4 "0 -1 0"
+"e13" 5 0
+"e12" 5 0
+"e11" 5 0
+"e10" 5 0
+"e9" 5 0
+"f9" 5 0
+"g9" 5 0
+"h9" 5 0
+"i10" 5 0
+"i9" 5 0
+"i11" 5 0
+"j11" 5 0
+"k11" 5 0
+"l11" 5 0
+"l10" 5 0
+"l9" 5 0
+"n9" 5 0
+"m9" 5 0
+"o9" 5 0
+"o10" 5 0
+"p10" 5 0
+"p11" 5 0
+"p12" 5 0
+"o13" 5 0
+"p13" 5 0
+"o14" 5 0
+"n14" 5 0
+"l14" 5 0
+"f14" 5 0
+"g14" 5 0
+"h14" 5 0
+"i14" 5 0
+"j14" 5 0
+"m14" 5 0
+"k14" 5 0
+"f13" 5 0
+"j13" 5 0
+"i12" 2 0
+"l12" 2 0
+"j12" 2 0
+"k12" 2 0
+"h13" 1 1
+"g12" 3 0
+"h11" 3 0
+"m12" 3 0
+"n11" 3 0
+"d13" 8 0
+"d15" 8 0
+"b16" 8 0
+"b14" 8 0
+"b12" 8 0
+"b10" 8 0
+"b8" 8 0
+"d11" 8 0
+"d9" 8 0
+"d7" 8 0
+"q10" 8 0
+"q8" 8 0
+"s15" 8 0
+"s7" 8 0
+"s9" 8 0
+"s11" 8 0
+"s13" 8 0
+"q12" 8 0
+"q14" 8 0
+"q16" 8 0
+"h17" 4 0
+"g17" 4 0
+"f17" 4 0
+"e17" 4 0
+"d17" 4 0
+"c17" 4 0
+"b17" 4 0
+"a17" 4 0
+"a16" 4 0
+"a15" 4 0
+"b15" 4 0
+"c15" 4 0
+"c14" 4 0
+"d14" 4 0
+"e14" 4 0
+"e15" 4 0
+"f15" 4 0
+"g15" 4 0
+"h15" 4 0
+"i15" 4 0
+"j15" 4 0
+"k15" 4 0
+"l15" 4 0
+"m15" 4 0
+"n15" 4 0
+"o15" 4 0
+"p15" 4 0
+"q15" 4 0
+"r15" 4 0
+"r14" 4 0
+"s14" 4 0
+"t14" 4 0
+"t13" 4 0
+"t12" 4 0
+"s12" 4 0
+"r12" 4 0
+"r11" 4 0
+"q11" 4 0
+"r10" 4 0
+"s10" 4 0
+"t10" 4 0
+"t9" 4 0
+"t8" 4 0
+"s8" 4 0
+"r8" 4 0
+"r7" 4 0
+"q7" 4 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"m7" 4 0
+"l7" 4 0
+"k7" 4 0
+"j7" 4 0
+"i7" 4 0
+"h7" 4 0
+"g7" 4 0
+"f7" 4 0
+"e7" 4 0
+"e6" 4 0
+"d6" 4 0
+"c6" 4 0
+"b6" 4 0
+"a6" 4 0
+"a5" 4 0
+"b5" 4 0
+"c5" 4 0
+"d5" 4 0
+"e5" 4 0
+"f5" 4 0
+"g5" 4 0
+"h5" 4 0
+"i5" 4 0
+"j5" 4 0
+"k5" 4 0
+"l5" 4 0
+"m5" 4 0
+"n5" 4 0
+"o5" 4 0
+"p5" 4 0
+"q5" 4 0
+"r5" 4 0
+"s5" 4 0
+"t5" 4 0
+"t4" 4 0
+"s4" 4 0
+"r4" 4 0
+"q4" 4 0
+"p4" 4 0
+"o4" 4 0
+"n4" 4 0
+"m4" 4 0
+"l4" 4 0
+"k4" 4 0
+"j4" 4 0
+"i4" 4 0
+"h4" 4 0
+"g4" 4 0
+"f4" 4 0
+"e4" 4 0
+"d4" 4 0
+"c4" 4 0
+"b4" 4 0
+"a4" 4 0
+"a3" 4 0
+"b3" 4 0
+"c3" 4 0
+"d3" 4 0
+"e3" 4 0
+"f3" 4 0
+"g3" 4 0
+"h3" 4 0
+"i3" 4 0
+"j3" 4 0
+"k3" 4 0
+"l3" 4 0
+"m3" 4 0
+"n3" 4 0
+"o3" 4 0
+"p3" 4 0
+"q3" 4 0
+"r3" 4 0
+"s3" 4 0
+"t3" 4 0
+"t2" 4 0
+"s2" 4 0
+"r2" 4 0
+"q2" 4 0
+"p2" 4 0
+"o2" 4 0
+"n2" 4 0
+"m2" 4 0
+"l2" 4 0
+"k2" 4 0
+"j2" 4 0
+"i2" 4 0
+"h2" 4 0
+"g2" 4 0
+"f2" 4 0
+"e2" 4 0
+"d2" 4 0
+"c2" 4 0
+"b2" 4 0
+"a2" 4 0
+"a1" 4 0
+"b1" 4 0
+"c1" 4 0
+"d1" 4 0
+"e1" 4 0
+"f1" 4 0
+"g1" 4 0
+"h1" 4 0
+"i1" 4 0
+"j1" 4 0
+"k1" 4 0
+"l1" 4 0
+"m1" 4 0
+"n1" 4 0
+"o1" 4 0
+"p1" 4 0
+"q1" 4 0
+"r1" 4 0
+"s1" 4 0
+"t1" 4 0
+"t6" 4 0
+"s6" 4 0
+"r6" 4 0
+"q6" 4 0
+"p6" 4 0
+"o6" 4 0
+"n6" 4 0
+"m6" 4 0
+"l6" 4 0
+"k6" 4 0
+"j6" 4 0
+"i6" 4 0
+"h6" 4 0
+"g6" 4 0
+"f6" 4 0
+"t7" 4 0
+"a7" 4 0
+"b7" 4 0
+"c7" 4 0
+"c8" 4 0
+"d8" 4 0
+"e8" 4 0
+"f8" 4 0
+"g8" 4 0
+"h8" 4 0
+"i8" 4 0
+"j8" 4 0
+"k8" 4 0
+"l8" 4 0
+"m8" 4 0
+"n8" 4 0
+"o8" 4 0
+"p8" 4 0
+"p9" 4 0
+"q9" 4 0
+"r9" 4 0
+"k9" 4 0
+"j9" 4 0
+"j10" 4 0
+"k10" 4 0
+"c9" 4 0
+"b9" 4 0
+"a9" 4 0
+"a8" 4 0
+"a10" 4 0
+"a11" 4 0
+"b11" 4 0
+"c11" 4 0
+"c10" 4 0
+"d10" 4 0
+"c12" 4 0
+"d12" 4 0
+"c13" 4 0
+"b13" 4 0
+"a13" 4 0
+"a12" 4 0
+"a14" 4 0
+"t11" 4 0
+"r13" 4 0
+"q13" 4 0
+"t15" 4 0
+"t16" 4 0
+"s16" 4 0
+"r16" 4 0
+"r17" 4 0
+"q17" 4 0
+"p17" 4 0
+"o17" 4 0
+"n17" 4 0
+"m17" 4 0
+"l17" 4 0
+"k17" 4 0
+"j17" 4 0
+"i17" 4 0
+"i16" 4 0
+"h16" 4 0
+"g16" 4 0
+"f16" 4 0
+"e16" 4 0
+"d16" 4 0
+"c16" 4 0
+"j16" 4 0
+"k16" 4 0
+"l16" 4 0
+"m16" 4 0
+"n16" 4 0
+"o16" 4 0
+"p16" 4 0
+"i18" 4 0
+"h18" 4 0
+"g18" 4 0
+"f18" 4 0
+"e18" 4 0
+"d18" 4 0
+"c18" 4 0
+"b18" 4 0
+"a18" 4 0
+"a19" 4 0
+"b19" 4 0
+"c19" 4 0
+"d19" 4 0
+"e19" 4 0
+"f19" 4 0
+"g19" 4 0
+"h19" 4 0
+"i19" 4 0
+"j19" 4 0
+"k19" 4 0
+"l19" 4 0
+"m19" 4 0
+"n19" 4 0
+"o19" 4 0
+"p19" 4 0
+"q19" 4 0
+"r19" 4 0
+"s19" 4 0
+"t19" 4 0
+"t18" 4 0
+"s18" 4 0
+"r18" 4 0
+"q18" 4 0
+"p18" 4 0
+"o18" 4 0
+"n18" 4 0
+"m18" 4 0
+"l18" 4 0
+"k18" 4 0
+"j18" 4 0
+"s17" 4 0
+"t17" 4 0
+"t20" 4 0
+"s20" 4 0
+"r20" 4 0
+"q20" 4 0
+"p20" 4 0
+"o20" 4 0
+"n20" 4 0
+"m20" 4 0
+"l20" 4 0
+"k20" 4 0
+"j20" 4 0
+"i20" 4 0
+"h20" 4 0
+"g20" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"a20" 4 0
+"p14" 4 0
index 676e4baa1514902efc7bfa4459e9b9e881b86252..a0da90da16f0e5a3bc6efa34938fd613763af07f 100644 (file)
 // bulldozer storage "level9" last updated 11-06-2016 14:53:20
 nextlevel = "level10"
-"c9" 4 "0 -1 0"
-"b9" 4 "0 -1 0"
-"a9" 4 "0 -1 0"
-"a8" 4 "0 -1 0"
-"b8" 4 "0 -1 0"
-"c8" 4 "0 -1 0"
-"d8" 4 "0 -1 0"
-"e8" 4 "0 -1 0"
-"f8" 4 "0 -1 0"
-"g8" 4 "0 -1 0"
-"h8" 4 "0 -1 0"
-"i8" 4 "0 -1 0"
-"j8" 4 "0 -1 0"
-"k8" 4 "0 -1 0"
-"l8" 4 "0 -1 0"
-"m8" 4 "0 -1 0"
-"n8" 4 "0 -1 0"
-"o8" 4 "0 -1 0"
-"p8" 4 "0 -1 0"
-"q8" 4 "0 -1 0"
-"r8" 4 "0 -1 0"
-"s8" 4 "0 -1 0"
-"t8" 4 "0 -1 0"
-"t7" 4 "0 -1 0"
-"s7" 4 "0 -1 0"
-"r7" 4 "0 -1 0"
-"q7" 4 "0 -1 0"
-"p7" 4 "0 -1 0"
-"o7" 4 "0 -1 0"
-"n7" 4 "0 -1 0"
-"m7" 4 "0 -1 0"
-"l7" 4 "0 -1 0"
-"i7" 4 "0 -1 0"
-"h5" 4 "0 -1 0"
-"j7" 4 "0 -1 0"
-"g7" 4 "0 -1 0"
-"f7" 4 "0 -1 0"
-"e7" 4 "0 -1 0"
-"d7" 4 "0 -1 0"
-"c7" 4 "0 -1 0"
-"b7" 4 "0 -1 0"
-"a7" 4 "0 -1 0"
-"a6" 4 "0 -1 0"
-"b6" 4 "0 -1 0"
-"c6" 4 "0 -1 0"
-"d6" 4 "0 -1 0"
-"e6" 4 "0 -1 0"
-"f6" 4 "0 -1 0"
-"g6" 4 "0 -1 0"
-"k7" 4 "0 -1 0"
-"j6" 4 "0 -1 0"
-"l6" 4 "0 -1 0"
-"m6" 4 "0 -1 0"
-"n6" 4 "0 -1 0"
-"o6" 4 "0 -1 0"
-"p6" 4 "0 -1 0"
-"q6" 4 "0 -1 0"
-"r6" 4 "0 -1 0"
-"s6" 4 "0 -1 0"
-"t6" 4 "0 -1 0"
-"t5" 4 "0 -1 0"
-"s5" 4 "0 -1 0"
-"r5" 4 "0 -1 0"
-"q5" 4 "0 -1 0"
-"p5" 4 "0 -1 0"
-"o5" 4 "0 -1 0"
-"n5" 4 "0 -1 0"
-"m5" 4 "0 -1 0"
-"l5" 4 "0 -1 0"
-"g5" 4 "0 -1 0"
-"f5" 4 "0 -1 0"
-"e5" 4 "0 -1 0"
-"d5" 4 "0 -1 0"
-"c5" 4 "0 -1 0"
-"b5" 4 "0 -1 0"
-"a5" 4 "0 -1 0"
-"a4" 4 "0 -1 0"
-"b4" 4 "0 -1 0"
-"c4" 4 "0 -1 0"
-"d4" 4 "0 -1 0"
-"e4" 4 "0 -1 0"
-"f4" 4 "0 -1 0"
-"g4" 4 "0 -1 0"
-"h4" 4 "0 -1 0"
-"i4" 4 "0 -1 0"
-"j4" 4 "0 -1 0"
-"l4" 4 "0 -1 0"
-"m4" 4 "0 -1 0"
-"n4" 4 "0 -1 0"
-"o4" 4 "0 -1 0"
-"p4" 4 "0 -1 0"
-"q4" 4 "0 -1 0"
-"r4" 4 "0 -1 0"
-"s4" 4 "0 -1 0"
-"t4" 4 "0 -1 0"
-"t3" 4 "0 -1 0"
-"s3" 4 "0 -1 0"
-"r3" 4 "0 -1 0"
-"q3" 4 "0 -1 0"
-"p3" 4 "0 -1 0"
-"o3" 4 "0 -1 0"
-"n3" 4 "0 -1 0"
-"m3" 4 "0 -1 0"
-"l3" 4 "0 -1 0"
-"j3" 4 "0 -1 0"
-"i3" 4 "0 -1 0"
-"h3" 4 "0 -1 0"
-"g3" 4 "0 -1 0"
-"f3" 4 "0 -1 0"
-"e3" 4 "0 -1 0"
-"d3" 4 "0 -1 0"
-"c3" 4 "0 -1 0"
-"b3" 4 "0 -1 0"
-"a3" 4 "0 -1 0"
-"a2" 4 "0 -1 0"
-"b2" 4 "0 -1 0"
-"c2" 4 "0 -1 0"
-"d2" 4 "0 -1 0"
-"e2" 4 "0 -1 0"
-"f2" 4 "0 -1 0"
-"g2" 4 "0 -1 0"
-"h2" 4 "0 -1 0"
-"i2" 4 "0 -1 0"
-"j2" 4 "0 -1 0"
-"l2" 4 "0 -1 0"
-"m2" 4 "0 -1 0"
-"n2" 4 "0 -1 0"
-"o2" 4 "0 -1 0"
-"p2" 4 "0 -1 0"
-"q2" 4 "0 -1 0"
-"r2" 4 "0 -1 0"
-"s2" 4 "0 -1 0"
-"t2" 4 "0 -1 0"
-"t1" 4 "0 -1 0"
-"s1" 4 "0 -1 0"
-"r1" 4 "0 -1 0"
-"q1" 4 "0 -1 0"
-"p1" 4 "0 -1 0"
-"o1" 4 "0 -1 0"
-"n1" 4 "0 -1 0"
-"m1" 4 "0 -1 0"
-"l1" 4 "0 -1 0"
-"k1" 4 "0 -1 0"
-"j1" 4 "0 -1 0"
-"i1" 4 "0 -1 0"
-"h1" 4 "0 -1 0"
-"g1" 4 "0 -1 0"
-"f1" 4 "0 -1 0"
-"e1" 4 "0 -1 0"
-"d1" 4 "0 -1 0"
-"c1" 4 "0 -1 0"
-"b1" 4 "0 -1 0"
-"a1" 4 "0 -1 0"
-"t9" 4 "0 -1 0"
-"s9" 4 "0 -1 0"
-"r9" 4 "0 -1 0"
-"q9" 4 "0 -1 0"
-"p11" 6 "0 -1 0"
-"o9" 4 "0 -1 0"
-"n9" 4 "0 -1 0"
-"m10" 5 "0 -1 0"
-"m9" 5 "0 -1 0"
-"l9" 5 "0 -1 0"
-"k9" 5 "0 -1 0"
-"j9" 5 "0 -1 0"
-"i9" 5 "0 -1 0"
-"g9" 4 "0 -1 0"
-"f11" 6 "0 -1 0"
-"e9" 4 "0 -1 0"
-"d9" 4 "0 -1 0"
-"d10" 4 "0 -1 0"
-"c10" 4 "0 -1 0"
-"b10" 4 "0 -1 0"
-"a10" 4 "0 -1 0"
-"a11" 4 "0 -1 0"
-"b11" 4 "0 -1 0"
-"c11" 4 "0 -1 0"
-"f9" 6 "0 -1 0"
-"f12" 11 "0 -1 0"
-"f15" 6 "0 -1 0"
-"g11" 4 "0 -1 0"
-"h9" 5 "0 -1 0"
-"i14" 1 "0 -1 0"
-"i11" 2 "0 -1 0"
-"i10" 2 "0 -1 0"
-"j10" 2 "0 -1 0"
-"h10" 5 "0 -1 0"
-"n11" 4 "0 -1 0"
-"o11" 4 "0 -1 0"
-"p13" 6 "0 -1 0"
-"h7" 4 "0 -1 0"
-"p9" 6 "0 -1 0"
-"s11" 4 "0 -1 0"
-"t11" 4 "0 -1 0"
-"t10" 4 "0 -1 0"
-"s10" 4 "0 -1 0"
-"r10" 4 "0 -1 0"
-"p15" 6 "0 -1 0"
-"q11" 11 "0 -1 0"
-"o10" 4 "0 -1 0"
-"n10" 4 "0 -1 0"
-"h11" 5 "0 -1 0"
-"k10" 2 "0 -1 0"
-"l10" 2 "0 -1 0"
-"j14" 3 "0 -1 0"
-"j13" 3 "0 -1 0"
-"h12" 5 "0 -1 0"
-"g10" 4 "0 -1 0"
-"f14" 11 "0 -1 0"
-"f13" 6 "0 -1 0"
-"t12" 4 "0 -1 0"
-"r11" 6 "0 -1 0"
-"h6" 4 "0 -1 0"
-"p14" 11 "0 -1 0"
-"p10" 11 "0 -1 0"
-"o12" 4 "0 -1 0"
-"n12" 4 "0 -1 0"
-"i12" 5 "0 -1 0"
-"k12" 3 "0 -1 0"
-"j11" 3 "0 -1 0"
-"k10" 3 "0 -1 0"
-"i13" 5 "0 -1 0"
-"h13" 5 "0 -1 0"
-"g12" 4 "0 -1 0"
-"f16" 11 "0 -1 0"
-"c13" 11 "0 -1 0"
-"e13" 11 "0 -1 0"
-"e10" 6 "0 -1 0"
-"b12" 4 "0 -1 0"
-"a12" 4 "0 -1 0"
-"a13" 4 "0 -1 0"
-"b13" 4 "0 -1 0"
-"d14" 11 "0 -1 0"
-"e12" 6 "0 -1 0"
-"f10" 11 "0 -1 0"
-"d13" 6 "0 -1 0"
-"g13" 4 "0 -1 0"
-"h14" 5 "0 -1 0"
-"h15" 5 "0 -1 0"
-"f17" 6 "0 -1 0"
-"e16" 6 "0 -1 0"
-"i15" 5 "0 -1 0"
-"d15" 6 "0 -1 0"
-"n13" 4 "0 -1 0"
-"o13" 4 "0 -1 0"
-"p17" 6 "0 -1 0"
-"r12" 11 "0 -1 0"
-"q13" 11 "0 -1 0"
-"s14" 6 "0 -1 0"
-"t13" 4 "0 -1 0"
-"t14" 4 "0 -1 0"
-"s12" 6 "0 -1 0"
-"s13" 11 "0 -1 0"
-"q12" 6 "0 -1 0"
-"p12" 11 "0 -1 0"
-"o14" 4 "0 -1 0"
-"n14" 4 "0 -1 0"
-"m14" 4 "0 -1 0"
-"i16" 5 "0 -1 0"
-"c14" 6 "0 -1 0"
-"c12" 6 "0 -1 0"
-"d11" 6 "0 -1 0"
-"j16" 5 "0 -1 0"
-"g14" 4 "0 -1 0"
-"p16" 11 "0 -1 0"
-"e14" 6 "0 -1 0"
-"e15" 11 "0 -1 0"
-"d12" 11 "0 -1 0"
-"b14" 4 "0 -1 0"
-"a14" 4 "0 -1 0"
-"a15" 4 "0 -1 0"
-"b15" 4 "0 -1 0"
-"c15" 4 "0 -1 0"
-"e11" 11 "0 -1 0"
-"q15" 11 "0 -1 0"
-"r14" 11 "0 -1 0"
-"k16" 5 "0 -1 0"
-"l16" 5 "0 -1 0"
-"l15" 5 "0 -1 0"
-"l14" 5 "0 -1 0"
-"q10" 6 "0 -1 0"
-"l13" 5 "0 -1 0"
-"m15" 4 "0 -1 0"
-"n15" 4 "0 -1 0"
-"o15" 4 "0 -1 0"
-"q16" 6 "0 -1 0"
-"r15" 6 "0 -1 0"
-"q14" 6 "0 -1 0"
-"s15" 4 "0 -1 0"
-"t15" 4 "0 -1 0"
-"t16" 4 "0 -1 0"
-"s16" 4 "0 -1 0"
-"r16" 4 "0 -1 0"
-"r13" 6 "0 -1 0"
-"k6" 4 "0 -1 0"
-"o16" 4 "0 -1 0"
-"n16" 4 "0 -1 0"
-"m16" 4 "0 -1 0"
-"m13" 5 "0 -1 0"
-"m12" 5 "0 -1 0"
-"h16" 4 "0 -1 0"
-"g16" 4 "0 -1 0"
-"g15" 4 "0 -1 0"
-"m11" 5 "0 -1 0"
-"k5" 4 "0 -1 0"
-"j5" 4 "0 -1 0"
-"d16" 4 "0 -1 0"
-"c16" 4 "0 -1 0"
-"b16" 4 "0 -1 0"
-"a16" 4 "0 -1 0"
-"a17" 4 "0 -1 0"
-"b17" 4 "0 -1 0"
-"c17" 4 "0 -1 0"
-"d17" 4 "0 -1 0"
-"e17" 4 "0 -1 0"
-"i5" 4 "0 -1 0"
-"g17" 4 "0 -1 0"
-"h17" 4 "0 -1 0"
-"i17" 4 "0 -1 0"
-"j17" 4 "0 -1 0"
-"k17" 4 "0 -1 0"
-"l17" 4 "0 -1 0"
-"m17" 4 "0 -1 0"
-"n17" 4 "0 -1 0"
-"o17" 4 "0 -1 0"
-"i6" 4 "0 -1 0"
-"q17" 4 "0 -1 0"
-"r17" 4 "0 -1 0"
-"s17" 4 "0 -1 0"
-"t17" 4 "0 -1 0"
-"t18" 4 "0 -1 0"
-"s18" 4 "0 -1 0"
-"r18" 4 "0 -1 0"
-"q18" 4 "0 -1 0"
-"p18" 4 "0 -1 0"
-"o18" 4 "0 -1 0"
-"n18" 4 "0 -1 0"
-"m18" 4 "0 -1 0"
-"l18" 4 "0 -1 0"
-"k18" 4 "0 -1 0"
-"j18" 4 "0 -1 0"
-"i18" 4 "0 -1 0"
-"h18" 4 "0 -1 0"
-"g18" 4 "0 -1 0"
-"f18" 4 "0 -1 0"
-"e18" 4 "0 -1 0"
-"d18" 4 "0 -1 0"
-"c18" 4 "0 -1 0"
-"b18" 4 "0 -1 0"
-"a18" 4 "0 -1 0"
-"a19" 4 "0 -1 0"
-"b19" 4 "0 -1 0"
-"c19" 4 "0 -1 0"
-"d19" 4 "0 -1 0"
-"e19" 4 "0 -1 0"
-"f19" 4 "0 -1 0"
-"g19" 4 "0 -1 0"
-"h19" 4 "0 -1 0"
-"i19" 4 "0 -1 0"
-"j19" 4 "0 -1 0"
-"k19" 4 "0 -1 0"
-"l19" 4 "0 -1 0"
-"m19" 4 "0 -1 0"
-"n19" 4 "0 -1 0"
-"o19" 4 "0 -1 0"
-"p19" 4 "0 -1 0"
-"q19" 4 "0 -1 0"
-"r19" 4 "0 -1 0"
-"s19" 4 "0 -1 0"
-"t19" 4 "0 -1 0"
-"t20" 4 "0 -1 0"
-"s20" 4 "0 -1 0"
-"r20" 4 "0 -1 0"
-"q20" 4 "0 -1 0"
-"p20" 4 "0 -1 0"
-"o20" 4 "0 -1 0"
-"n20" 4 "0 -1 0"
-"m20" 4 "0 -1 0"
-"l20" 4 "0 -1 0"
-"k20" 4 "0 -1 0"
-"j20" 4 "0 -1 0"
-"i20" 4 "0 -1 0"
-"h20" 4 "0 -1 0"
-"g20" 4 "0 -1 0"
-"f20" 4 "0 -1 0"
-"e20" 4 "0 -1 0"
-"d20" 4 "0 -1 0"
-"c20" 4 "0 -1 0"
-"b20" 4 "0 -1 0"
-"a20" 4 "0 -1 0"
-"k4" 4 "0 -1 0"
-"k3" 4 "0 -1 0"
-"k2" 4 "0 -1 0"
+"c9" 4 0
+"b9" 4 0
+"a9" 4 0
+"a8" 4 0
+"b8" 4 0
+"c8" 4 0
+"d8" 4 0
+"e8" 4 0
+"f8" 4 0
+"g8" 4 0
+"h8" 4 0
+"i8" 4 0
+"j8" 4 0
+"k8" 4 0
+"l8" 4 0
+"m8" 4 0
+"n8" 4 0
+"o8" 4 0
+"p8" 4 0
+"q8" 4 0
+"r8" 4 0
+"s8" 4 0
+"t8" 4 0
+"t7" 4 0
+"s7" 4 0
+"r7" 4 0
+"q7" 4 0
+"p7" 4 0
+"o7" 4 0
+"n7" 4 0
+"m7" 4 0
+"l7" 4 0
+"i7" 4 0
+"h5" 4 0
+"j7" 4 0
+"g7" 4 0
+"f7" 4 0
+"e7" 4 0
+"d7" 4 0
+"c7" 4 0
+"b7" 4 0
+"a7" 4 0
+"a6" 4 0
+"b6" 4 0
+"c6" 4 0
+"d6" 4 0
+"e6" 4 0
+"f6" 4 0
+"g6" 4 0
+"k7" 4 0
+"j6" 4 0
+"l6" 4 0
+"m6" 4 0
+"n6" 4 0
+"o6" 4 0
+"p6" 4 0
+"q6" 4 0
+"r6" 4 0
+"s6" 4 0
+"t6" 4 0
+"t5" 4 0
+"s5" 4 0
+"r5" 4 0
+"q5" 4 0
+"p5" 4 0
+"o5" 4 0
+"n5" 4 0
+"m5" 4 0
+"l5" 4 0
+"g5" 4 0
+"f5" 4 0
+"e5" 4 0
+"d5" 4 0
+"c5" 4 0
+"b5" 4 0
+"a5" 4 0
+"a4" 4 0
+"b4" 4 0
+"c4" 4 0
+"d4" 4 0
+"e4" 4 0
+"f4" 4 0
+"g4" 4 0
+"h4" 4 0
+"i4" 4 0
+"j4" 4 0
+"l4" 4 0
+"m4" 4 0
+"n4" 4 0
+"o4" 4 0
+"p4" 4 0
+"q4" 4 0
+"r4" 4 0
+"s4" 4 0
+"t4" 4 0
+"t3" 4 0
+"s3" 4 0
+"r3" 4 0
+"q3" 4 0
+"p3" 4 0
+"o3" 4 0
+"n3" 4 0
+"m3" 4 0
+"l3" 4 0
+"j3" 4 0
+"i3" 4 0
+"h3" 4 0
+"g3" 4 0
+"f3" 4 0
+"e3" 4 0
+"d3" 4 0
+"c3" 4 0
+"b3" 4 0
+"a3" 4 0
+"a2" 4 0
+"b2" 4 0
+"c2" 4 0
+"d2" 4 0
+"e2" 4 0
+"f2" 4 0
+"g2" 4 0
+"h2" 4 0
+"i2" 4 0
+"j2" 4 0
+"l2" 4 0
+"m2" 4 0
+"n2" 4 0
+"o2" 4 0
+"p2" 4 0
+"q2" 4 0
+"r2" 4 0
+"s2" 4 0
+"t2" 4 0
+"t1" 4 0
+"s1" 4 0
+"r1" 4 0
+"q1" 4 0
+"p1" 4 0
+"o1" 4 0
+"n1" 4 0
+"m1" 4 0
+"l1" 4 0
+"k1" 4 0
+"j1" 4 0
+"i1" 4 0
+"h1" 4 0
+"g1" 4 0
+"f1" 4 0
+"e1" 4 0
+"d1" 4 0
+"c1" 4 0
+"b1" 4 0
+"a1" 4 0
+"t9" 4 0
+"s9" 4 0
+"r9" 4 0
+"q9" 4 0
+"p11" 6 0
+"o9" 4 0
+"n9" 4 0
+"m10" 5 0
+"m9" 5 0
+"l9" 5 0
+"k9" 5 0
+"j9" 5 0
+"i9" 5 0
+"g9" 4 0
+"f11" 6 0
+"e9" 4 0
+"d9" 4 0
+"d10" 4 0
+"c10" 4 0
+"b10" 4 0
+"a10" 4 0
+"a11" 4 0
+"b11" 4 0
+"c11" 4 0
+"f9" 6 0
+"f12" 11 0
+"f15" 6 0
+"g11" 4 0
+"h9" 5 0
+"i14" 1 1
+"i11" 2 0
+"i10" 2 0
+"j10" 2 0
+"h10" 5 0
+"n11" 4 0
+"o11" 4 0
+"p13" 6 0
+"h7" 4 0
+"p9" 6 0
+"s11" 4 0
+"t11" 4 0
+"t10" 4 0
+"s10" 4 0
+"r10" 4 0
+"p15" 6 0
+"q11" 11 0
+"o10" 4 0
+"n10" 4 0
+"h11" 5 0
+"k10" 2 0
+"l10" 2 0
+"j14" 3 0
+"j13" 3 0
+"h12" 5 0
+"g10" 4 0
+"f14" 11 0
+"f13" 6 0
+"t12" 4 0
+"r11" 6 0
+"h6" 4 0
+"p14" 11 0
+"p10" 11 0
+"o12" 4 0
+"n12" 4 0
+"i12" 5 0
+"k12" 3 0
+"j11" 3 0
+"k10" 3 0
+"i13" 5 0
+"h13" 5 0
+"g12" 4 0
+"f16" 11 0
+"c13" 11 0
+"e13" 11 0
+"e10" 6 0
+"b12" 4 0
+"a12" 4 0
+"a13" 4 0
+"b13" 4 0
+"d14" 11 0
+"e12" 6 0
+"f10" 11 0
+"d13" 6 0
+"g13" 4 0
+"h14" 5 0
+"h15" 5 0
+"f17" 6 0
+"e16" 6 0
+"i15" 5 0
+"d15" 6 0
+"n13" 4 0
+"o13" 4 0
+"p17" 6 0
+"r12" 11 0
+"q13" 11 0
+"s14" 6 0
+"t13" 4 0
+"t14" 4 0
+"s12" 6 0
+"s13" 11 0
+"q12" 6 0
+"p12" 11 0
+"o14" 4 0
+"n14" 4 0
+"m14" 4 0
+"i16" 5 0
+"c14" 6 0
+"c12" 6 0
+"d11" 6 0
+"j16" 5 0
+"g14" 4 0
+"p16" 11 0
+"e14" 6 0
+"e15" 11 0
+"d12" 11 0
+"b14" 4 0
+"a14" 4 0
+"a15" 4 0
+"b15" 4 0
+"c15" 4 0
+"e11" 11 0
+"q15" 11 0
+"r14" 11 0
+"k16" 5 0
+"l16" 5 0
+"l15" 5 0
+"l14" 5 0
+"q10" 6 0
+"l13" 5 0
+"m15" 4 0
+"n15" 4 0
+"o15" 4 0
+"q16" 6 0
+"r15" 6 0
+"q14" 6 0
+"s15" 4 0
+"t15" 4 0
+"t16" 4 0
+"s16" 4 0
+"r16" 4 0
+"r13" 6 0
+"k6" 4 0
+"o16" 4 0
+"n16" 4 0
+"m16" 4 0
+"m13" 5 0
+"m12" 5 0
+"h16" 4 0
+"g16" 4 0
+"g15" 4 0
+"m11" 5 0
+"k5" 4 0
+"j5" 4 0
+"d16" 4 0
+"c16" 4 0
+"b16" 4 0
+"a16" 4 0
+"a17" 4 0
+"b17" 4 0
+"c17" 4 0
+"d17" 4 0
+"e17" 4 0
+"i5" 4 0
+"g17" 4 0
+"h17" 4 0
+"i17" 4 0
+"j17" 4 0
+"k17" 4 0
+"l17" 4 0
+"m17" 4 0
+"n17" 4 0
+"o17" 4 0
+"i6" 4 0
+"q17" 4 0
+"r17" 4 0
+"s17" 4 0
+"t17" 4 0
+"t18" 4 0
+"s18" 4 0
+"r18" 4 0
+"q18" 4 0
+"p18" 4 0
+"o18" 4 0
+"n18" 4 0
+"m18" 4 0
+"l18" 4 0
+"k18" 4 0
+"j18" 4 0
+"i18" 4 0
+"h18" 4 0
+"g18" 4 0
+"f18" 4 0
+"e18" 4 0
+"d18" 4 0
+"c18" 4 0
+"b18" 4 0
+"a18" 4 0
+"a19" 4 0
+"b19" 4 0
+"c19" 4 0
+"d19" 4 0
+"e19" 4 0
+"f19" 4 0
+"g19" 4 0
+"h19" 4 0
+"i19" 4 0
+"j19" 4 0
+"k19" 4 0
+"l19" 4 0
+"m19" 4 0
+"n19" 4 0
+"o19" 4 0
+"p19" 4 0
+"q19" 4 0
+"r19" 4 0
+"s19" 4 0
+"t19" 4 0
+"t20" 4 0
+"s20" 4 0
+"r20" 4 0
+"q20" 4 0
+"p20" 4 0
+"o20" 4 0
+"n20" 4 0
+"m20" 4 0
+"l20" 4 0
+"k20" 4 0
+"j20" 4 0
+"i20" 4 0
+"h20" 4 0
+"g20" 4 0
+"f20" 4 0
+"e20" 4 0
+"d20" 4 0
+"c20" 4 0
+"b20" 4 0
+"a20" 4 0
+"k4" 4 0
+"k3" 4 0
+"k2" 4 0
index 7910786107c1685dd05f2e896ea65d976a870607..8fd4d2baf66b3a9e74db9b6f28374bcb2c18a5e8 100644 (file)
@@ -10,7 +10,8 @@ set g_dodging 0 "set to 1 to enable dodging in games"
 
 seta cl_dodging_timeout 0.2 "determines how long apart (in seconds) two taps on the same direction key are considered a dodge. use 0 to disable"
 
-set sv_dodging_wall_dodging 0 "set to 1 to allow dodging off walls. 0 to disable"
+set sv_dodging_air_dodging 0
+set sv_dodging_wall_dodging 0 "allow dodging off walls"
 set sv_dodging_delay 0.7 "determines how long a player has to wait to be able to dodge again after dodging"
 set sv_dodging_up_speed 200 "the jump velocity of the dodge"
 set sv_dodging_horiz_speed 400 "the horizontal velocity of the dodge"
@@ -20,6 +21,7 @@ set sv_dodging_height_threshold 10 "the maximum height above ground where to all
 set sv_dodging_wall_distance_threshold 10 "the maximum distance from a wall that still allows dodging"
 set sv_dodging_sound 1 "if 1 dodging makes a sound. if 0 dodging is silent"
 set sv_dodging_frozen 0 "allow dodging while frozen"
+set sv_dodging_frozen_doubletap 0
 
 
 // ===========
@@ -29,6 +31,10 @@ set g_instagib 0 "enable instagib"
 set g_instagib_extralives 1 "how many extra lives you will get per powerup"
 set g_instagib_ammo_start 10 "starting ammo"
 set g_instagib_ammo_drop 5 "how much ammo you'll get for weapons or cells"
+set g_instagib_ammo_convert_bullets 0 "convert bullet ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_cells 0 "convert normal cell ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_rockets 0 "convert rocket ammo packs to insta cell ammo packs"
+set g_instagib_ammo_convert_shells 0 "convert shell ammo packs to insta cell ammo packs"
 set g_instagib_invis_alpha 0.15
 set g_instagib_speed_highspeed 1.5 "speed-multiplier that applies while you carry the invincibility powerup"
 set g_instagib_damagedbycontents 1 "allow damage from lava pits in instagib"
@@ -43,10 +49,11 @@ set g_instagib_friendlypush 1 "allow pushing teammates with the vaporizer primar
 // ==========
 set g_overkill 0 "enable overkill"
 
-set g_overkill_100a_anyway 1
-set g_overkill_100h_anyway 1
 set g_overkill_powerups_replace 1
-set g_overkill_superguns_respawn_time 120
+set g_overkill_filter_healthmega 0
+set g_overkill_filter_armormedium 0
+set g_overkill_filter_armorbig 0
+set g_overkill_filter_armorlarge 0
 
 set g_overkill_ammo_charge 0
 set g_overkill_ammo_charge_notice 1
@@ -187,6 +194,7 @@ set g_nades_spawn 1 "give nades right away when player spawns rather than delayi
 set g_nades_client_select 0 "allow client side selection of nade type"
 set g_nades_pickup 0 "allow picking up thrown nades (not your own)"
 set g_nades_pickup_time 2 "time until picked up nade explodes"
+set g_nades_override_dropweapon 1
 set g_nades_nade_lifetime 3.5
 set g_nades_nade_minforce 400
 set g_nades_nade_maxforce 2000
@@ -302,7 +310,7 @@ set g_buffs_randomize 1 "randomize buff type when player drops buff"
 set g_buffs_random_lifetime 30 "re-spawn the buff again if it hasn't been touched after this time in seconds"
 set g_buffs_random_location 0 "randomize buff location on start and when reset"
 set g_buffs_random_location_attempts 10 "number of random locations a single buff will attempt to respawn at before giving up"
-set g_buffs_spawn_count 5 "how many buffs to spawn on the map if none exist already"
+set g_buffs_spawn_count 0 "how many buffs to spawn on the map if none exist already"
 set g_buffs_replace_powerups 1 "replace powerups on the map with random buffs"
 set g_buffs_cooldown_activate 5 "cooldown period when buff is first activated"
 set g_buffs_cooldown_respawn 3 "cooldown period when buff is reloading"
index 2409b83d68e961634a316d738c81beb1b030fcb5..8583592b9acb74d11d24b8125b9b9caac23f0177 100644 (file)
@@ -102,7 +102,7 @@ seta notification_ANNCE_VOTE_ACCEPT "2" "0 = disabled, 1 = enabled if gentle mod
 seta notification_ANNCE_VOTE_CALL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 seta notification_ANNCE_VOTE_FAIL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 
-// MSG_INFO notifications (count = 316):
+// MSG_INFO notifications (count = 320):
 seta notification_INFO_CA_JOIN_LATE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CA_LEAVE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CHAT_NOSPECTATORS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -311,6 +311,10 @@ seta notification_INFO_LMS_FORFEIT "1" "0 = off, 1 = print to console, 2 = print
 seta notification_INFO_LMS_NOLIVES "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_MINIGAME_INVITE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_MONSTERS_DISABLED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_BLUE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_PINK "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_RED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_NEXBALL_RETURN_HELD_YELLOW "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CAPTURE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CPDESTROYED_BLUE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_ONSLAUGHT_CPDESTROYED_PINK "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -420,7 +424,7 @@ seta notification_INFO_WEAPON_TUBA_SUICIDE "1" "0 = off, 1 = print to console, 2
 seta notification_INFO_WEAPON_VAPORIZER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_VORTEX_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 
-// MSG_CENTER notifications (count = 225):
+// MSG_CENTER notifications (count = 230):
 seta notification_CENTER_ALONE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_ATTACKING "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_DEFENDING "1" "0 = off, 1 = centerprint"
@@ -488,7 +492,15 @@ seta notification_CENTER_CTF_STALEMATE_CARRIER "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_CTF_STALEMATE_OTHER "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_FRAG "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_FRAGGED "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAGGED_FIRE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAGGED_FIRE_VERBOSE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAGGED_FREEZE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAGGED_FREEZE_VERBOSE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_FRAGGED_VERBOSE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAG_FIRE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAG_FIRE_VERBOSE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAG_FREEZE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_DEATH_MURDER_FRAG_FREEZE_VERBOSE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_FRAG_VERBOSE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_TYPEFRAG "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DEATH_MURDER_TYPEFRAGGED "1" "0 = off, 1 = centerprint"
@@ -537,8 +549,6 @@ seta notification_CENTER_DOOR_LOCKED_NEED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_DOOR_UNLOCKED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_EXTRALIVES "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_FREEZETAG_AUTO_REVIVED "1" "0 = off, 1 = centerprint"
-seta notification_CENTER_FREEZETAG_FREEZE "1" "0 = off, 1 = centerprint"
-seta notification_CENTER_FREEZETAG_FROZEN "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_FREEZETAG_REVIVE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_FREEZETAG_REVIVED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_FREEZETAG_REVIVE_SELF "1" "0 = off, 1 = centerprint"
@@ -583,7 +593,6 @@ seta notification_CENTER_LMS_NOLIVES "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_PLAYERS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_TEAMS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MOTD "1" "0 = off, 1 = centerprint"
-seta notification_CENTER_NADE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NADE_BONUS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NADE_THROW "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NIX_COUNTDOWN "1" "0 = off, 1 = centerprint"
@@ -802,7 +811,7 @@ seta notification_WEAPON_TUBA_SUICIDE "1" "Enable this multiple notification"
 seta notification_WEAPON_VAPORIZER_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_VORTEX_MURDER "1" "Enable this multiple notification"
 
-// MSG_CHOICE notifications (count = 24):
+// MSG_CHOICE notifications (count = 28):
 seta notification_CHOICE_CTF_CAPTURE_BROKEN_BLUE "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
 seta notification_CHOICE_CTF_CAPTURE_BROKEN_BLUE_ALLOWED "2" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
 seta notification_CHOICE_CTF_CAPTURE_BROKEN_PINK "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
@@ -847,6 +856,14 @@ seta notification_CHOICE_FRAG "1" "Choice for this notification 0 = off, 1 = def
 seta notification_CHOICE_FRAG_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
 seta notification_CHOICE_FRAGGED "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
 seta notification_CHOICE_FRAGGED_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
+seta notification_CHOICE_FRAGGED_FIRE "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
+seta notification_CHOICE_FRAGGED_FIRE_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
+seta notification_CHOICE_FRAGGED_FREEZE "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
+seta notification_CHOICE_FRAGGED_FREEZE_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
+seta notification_CHOICE_FRAG_FIRE "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
+seta notification_CHOICE_FRAG_FIRE_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
+seta notification_CHOICE_FRAG_FREEZE "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
+seta notification_CHOICE_FRAG_FREEZE_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
 seta notification_CHOICE_TYPEFRAG "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
 seta notification_CHOICE_TYPEFRAG_ALLOWED "1" "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
 seta notification_CHOICE_TYPEFRAGGED "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
@@ -869,4 +886,4 @@ seta notification_show_sprees_info "3" "Show spree information in MSG_INFO messa
 seta notification_show_sprees_info_newline "1" "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"
 seta notification_show_sprees_info_specialonly "1" "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"
 
-// Notification counts (total = 807): MSG_ANNCE = 89, MSG_INFO = 316, MSG_CENTER = 225, MSG_MULTI = 153, MSG_CHOICE = 24
+// Notification counts (total = 820): MSG_ANNCE = 89, MSG_INFO = 320, MSG_CENTER = 230, MSG_MULTI = 153, MSG_CHOICE = 28
index e9fe5628940d9597fd5843533b54bced13066ae0..92fccaa42854ce67fef60c5cf5eb8ba4f5b0da45 100644 (file)
@@ -28,6 +28,7 @@ set g_physics_xonotic_airaccel_qw_stretchfactor 2
 set g_physics_xonotic_airaccel_sideways_friction 0
 set g_physics_xonotic_aircontrol 100
 set g_physics_xonotic_aircontrol_power 2
+set g_physics_xonotic_aircontrol_backwards 0
 set g_physics_xonotic_aircontrol_penalty 0
 set g_physics_xonotic_warsowbunny_airforwardaccel 1.00001
 set g_physics_xonotic_warsowbunny_topspeed 925
@@ -56,6 +57,7 @@ set g_physics_nexuiz_airaccel_qw_stretchfactor 0
 set g_physics_nexuiz_airaccel_sideways_friction 0.35
 set g_physics_nexuiz_aircontrol 0
 set g_physics_nexuiz_aircontrol_power 2
+set g_physics_nexuiz_aircontrol_backwards 0
 set g_physics_nexuiz_aircontrol_penalty 0
 set g_physics_nexuiz_warsowbunny_airforwardaccel 1.00001
 set g_physics_nexuiz_warsowbunny_topspeed 925
@@ -84,6 +86,7 @@ set g_physics_quake_airaccel_qw_stretchfactor 0
 set g_physics_quake_airaccel_sideways_friction 0
 set g_physics_quake_aircontrol 0
 set g_physics_quake_aircontrol_power 2
+set g_physics_quake_aircontrol_backwards 0
 set g_physics_quake_aircontrol_penalty 0
 set g_physics_quake_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake_warsowbunny_topspeed 925
@@ -112,6 +115,7 @@ set g_physics_warsow_airaccel_qw_stretchfactor 0
 set g_physics_warsow_airaccel_sideways_friction 0
 set g_physics_warsow_aircontrol 0
 set g_physics_warsow_aircontrol_power 2
+set g_physics_warsow_aircontrol_backwards 0
 set g_physics_warsow_aircontrol_penalty 0
 set g_physics_warsow_warsowbunny_airforwardaccel 1.00001
 set g_physics_warsow_warsowbunny_topspeed 925
@@ -140,6 +144,7 @@ set g_physics_defrag_airaccel_qw_stretchfactor 0
 set g_physics_defrag_airaccel_sideways_friction 0
 set g_physics_defrag_aircontrol 150
 set g_physics_defrag_aircontrol_power 2
+set g_physics_defrag_aircontrol_backwards 0
 set g_physics_defrag_aircontrol_penalty 0
 set g_physics_defrag_warsowbunny_airforwardaccel 1.00001
 set g_physics_defrag_warsowbunny_topspeed 925
@@ -168,6 +173,7 @@ set g_physics_quake3_airaccel_qw_stretchfactor 0
 set g_physics_quake3_airaccel_sideways_friction 0
 set g_physics_quake3_aircontrol 0
 set g_physics_quake3_aircontrol_power 2
+set g_physics_quake3_aircontrol_backwards 0
 set g_physics_quake3_aircontrol_penalty 0
 set g_physics_quake3_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake3_warsowbunny_topspeed 925
@@ -196,6 +202,7 @@ set g_physics_vecxis_airaccel_qw_stretchfactor 0
 set g_physics_vecxis_airaccel_sideways_friction 0.3
 set g_physics_vecxis_aircontrol 0
 set g_physics_vecxis_aircontrol_power 2
+set g_physics_vecxis_aircontrol_backwards 0
 set g_physics_vecxis_aircontrol_penalty 0
 set g_physics_vecxis_warsowbunny_airforwardaccel 1.00001
 set g_physics_vecxis_warsowbunny_topspeed 925
@@ -224,6 +231,7 @@ set g_physics_quake2_airaccel_qw_stretchfactor 0
 set g_physics_quake2_airaccel_sideways_friction 0
 set g_physics_quake2_aircontrol 0
 set g_physics_quake2_aircontrol_power 2
+set g_physics_quake2_aircontrol_backwards 0
 set g_physics_quake2_aircontrol_penalty 0
 set g_physics_quake2_warsowbunny_airforwardaccel 1.00001
 set g_physics_quake2_warsowbunny_topspeed 925
@@ -252,6 +260,7 @@ set g_physics_bones_airaccel_qw_stretchfactor 0
 set g_physics_bones_airaccel_sideways_friction 0
 set g_physics_bones_aircontrol 150
 set g_physics_bones_aircontrol_power 2
+set g_physics_bones_aircontrol_backwards 0
 set g_physics_bones_aircontrol_penalty 0
 set g_physics_bones_warsowbunny_airforwardaccel 1.00001
 set g_physics_bones_warsowbunny_topspeed 925
index e4bbad3d48630aa95c9f3463fdd1d327c7323a12..f2a4209c25eb44ee435273856d0c87720d7c00de 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index ee44b5547a052717cde7f28fb0f52063e638c65f..efe5b46ac3854ad774019787a0391140e315de76 100644 (file)
@@ -22,6 +22,7 @@ sv_maxairstrafespeed 100
 sv_airstrafeaccel_qw -0.97
 sv_aircontrol 125
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6aac341780e7573cbe580b714e62b747d61e6612..8d02ff46271260092d0fa52b2902adda3599965f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 90eaa49c1223cd4bacf7aa7e228dc4670f88240b..61ce6557dfb15d7ac1b55d0128039c12d92e1507 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.97
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 03081fdab7554b9c5118b795ac8b86987ff966a6..53ec90148e32aa7b1819454f57cba876ea759958 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index ef213a70f9d356226b401c0779752d85d69c7157..6a24567a93e518f68b347c6292d2e962c4279130 100644 (file)
@@ -26,6 +26,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 51c49d7832dbf0197ca6a2ab5d456389ce675ebf..f6f74cd21a9b88eabd7f1c278cf6f4ad320b6c98 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 0ce33aa95132362f57bb28eeec904c6549bed91e..9292016afe5d483864082f9f87e0b01483635f70 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 08711fd5b0f6905b33ff2688261f0e0543611922..660e7b818323ce0b654d4a58a9743c88d8897809 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 092985cae51a00a87a76cf26a78519c9f5d3f127..2c2e94c5f4dd7042ca9e041ed2244485ff500237 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index c6d9bef4b912d82e5200691d82a3fb55627b4d88..45a46cb46e24711f5cb5055b144af9a989efb399 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 5e0ee6ae0c6f265690c3783be05c3d10f35a1d19..86f1c31c744679d6bd61a548f5882f1a038f8817 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index d129a2db05ebada4a9698aeafcfedbb9456ac2d9..fe461768851079b603981d8d90cd6d815be5a143 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 8a52299763d537423fb2012f6a9ed304c969ef0e..ed45598a9bb4a31039f5bf1804b2f1c61c9282b9 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 4df3f211ebe490134394e21d60a35a0b739fae6b..3f7cd58f18f35567b43d626ccb55a0e3cbed412f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 3e905428f76d52f1183cde4fc116ccabc0268afa..77660a426a10abb2fa60168c63016f7e65eb5ef3 100644 (file)
@@ -32,6 +32,7 @@ sv_airstrafeaccel_qw -0.9825
 sv_aircontrol 125
 sv_aircontrol_penalty 100
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 448e087f46f20c1d0287dfd29c9a605a93266fcc..609a8f3d30f6d7829fc779c6147b8bce79134a36 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 124c50660a1046ca8bf9ce7245a4d9579a0ff71c..a9fbe166da3bbe3321a7741d5eda482c3507295b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 580f6257fa65f2bde52c74983f72492e45456f2f..87817dfcfd46a275d968daf57005c1d627be36ae 100644 (file)
@@ -24,6 +24,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6f00896b671b4b542115d6270c96b4bac7d08c20..7363b216dea7e8e34be9dc4871066baae213bc9c 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 31963e9feee4dc1dc6691514a081bde9d3765c7f..adc9df69c97af22d1644dab9d4cec72a78882982 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 82463859835480526e90bbae65db204238344fd7..596d6ca3b8ea78b2e524d60a423f56bc627b2f18 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6858892e3b3ad27b1c8a8e8d4257c7a650e269c6..9041601e2fd601ea734d80b12440ea0a4d1ab728 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 50101d73d43165843ecf32f08b55fb33aff8fb2d..5fbe22bab998900fd02a8e7ff24c1cebe9b2eb8f 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 9 // activates warsow movement mode
 sv_warsowbunny_accel 0.1593
index c4c3535a7f9ac1c74d3daa7a7c7645f4daaa9e27..3b28d90999966f1cc73b4c04fbcbf639e4173f2b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 331723ec9317539cbc2b2e4bdc139a99b52abb94..cf31a3f932790052f79df433b372a5f022cae33b 100644 (file)
@@ -23,6 +23,7 @@ sv_airstrafeaccel_qw 0
 sv_aircontrol 0
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 6 // activates warsow movement mode
 sv_warsowbunny_accel 0.1585
index c109e1157636e5b6fb91f658a0c8ba37910b922f..2ef0689755b7814c6913b67a73a623fb000cf42b 100644 (file)
@@ -17,7 +17,7 @@ sv_stepheight 31
 // Samual: 31 (just below 32, keeping things smooth without allowing 32qu steps)
 
 // jump duration == 2*sv_jumpvelocity / sv_gravity
-// in this case: 0.6888888888 (thus either 20 or 21 frames)
+// in this case: 0.65 (thus either 19 or 20 frames)
 // jump height == sv_jumpvelocity^2 / (2*sv_gravity)
 // in this case: 42.25
 // player: 24+45 qu
@@ -38,6 +38,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 100
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 900
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6dadcf161bd1078d9b6b4227e84c6d9624b0f7e0..0dfe0b46c9970bf689e257c720dab1dd846ff9d2 100644 (file)
@@ -31,6 +31,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 150
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index a3e42a977eca1a69fc3ba438f7aa69f305466e34..132aa9eff68cec24fde30da5dfb24bfb2becc04f 100644 (file)
@@ -37,6 +37,7 @@ sv_airstrafeaccel_qw -0.95
 sv_aircontrol 125
 sv_aircontrol_penalty 180
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 800
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 8597e9e005d77020ea96c2375efa78ba56887b8c..5a3aaa393bd117eaf455bfe99342e4979adc1b98 100644 (file)
@@ -29,6 +29,7 @@ sv_airstrafeaccel_qw 1
 sv_aircontrol 150
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 6cb0780dd988ee2f7ffafed71d16e8348d0a8b4b..4d1f652bb81bbae8bfa7ba6c653d0300012cc5e5 100644 (file)
@@ -29,6 +29,7 @@ sv_airstrafeaccel_qw -0.987
 sv_aircontrol 100
 sv_aircontrol_penalty 100
 sv_aircontrol_power 2.5
+sv_aircontrol_backwards 0
 sv_airspeedlimit_nonqw 0
 sv_warsowbunny_turnaccel 0
 sv_warsowbunny_accel 0.1593
index 9cbbcb5f7ee61f2207ed7a691ba88438397b9d80..33d1bc21320bee9ca676b8a35405050620af6bf4 100644 (file)
@@ -93,10 +93,10 @@ string autocvar_cl_weaponpriority;
 float autocvar_cl_zoomfactor;
 float autocvar_cl_zoomsensitivity;
 float autocvar_cl_zoomspeed;
-bool autocvar_cl_unpress_zoom_on_spawn = 1;
-bool autocvar_cl_unpress_zoom_on_death = 1;
-bool autocvar_cl_unpress_zoom_on_weapon_switch = 1;
-bool autocvar_cl_unpress_attack_on_weapon_switch = 1;
+bool autocvar_cl_unpress_zoom_on_spawn = true;
+bool autocvar_cl_unpress_zoom_on_death = true;
+bool autocvar_cl_unpress_zoom_on_weapon_switch = true;
+bool autocvar_cl_unpress_attack_on_weapon_switch = false;
 bool autocvar_con_chat;
 bool autocvar_con_chatrect;
 float autocvar_con_chatsize;
@@ -412,8 +412,6 @@ float autocvar_cl_hitsound_max_pitch = 1.5;
 float autocvar_cl_hitsound_nom_damage = 25;
 float autocvar_cl_hitsound_antispam_time;
 int autocvar_cl_eventchase_death = 1;
-vector autocvar_cl_eventchase_generator_viewoffset = '0 0 80';
-float autocvar_cl_eventchase_generator_distance = 400;
 float autocvar_cl_eventchase_distance = 140;
 float autocvar_cl_eventchase_speed = 1.3;
 vector autocvar_cl_eventchase_maxs = '12 12 8';
@@ -454,4 +452,3 @@ float autocvar_crosshair_rpc_alpha = 1;
 float autocvar_crosshair_rpc_size = 1;
 int autocvar_cl_nade_timer;
 bool autocvar_r_drawviewmodel;
-bool autocvar_cl_items_nofade;
index 0643bb09d5b37e3bdd7b014f13964959ab837484..104465360770beaddc14298f06d2872f0d2d6d1f 100644 (file)
@@ -392,8 +392,6 @@ void CSQCModel_AutoTagIndex_Apply(entity this)
        if(this.tag_entity && wasfreed(this.tag_entity))
                this.tag_entity = NULL;
 
-       viewloc_SetTags(this);
-
        MUTATOR_CALLHOOK(TagIndex_Update, this);
 
        if(this.tag_networkentity)
index 5b80690101b089e0e2cd15df07d40aa05bb9356a..f67cbffbd04d176160d072b1e6bddcbfe3e045b0 100644 (file)
@@ -1,6 +1,7 @@
 #include "centerprint.qh"
 
 #include "scoreboard.qh"
+#include <common/notifications/all.qh>
 
 // CenterPrint (#16)
 
@@ -246,6 +247,9 @@ void HUD_CenterPrint ()
                else // Expiring soon, so fade it out.
                        a = (centerprint_expire_time[j] - time) / max(0.0001, autocvar_hud_panel_centerprint_fade_out);
 
+               if(centerprint_msgID[j] == CPID_TIMEIN)
+                       a = 1;
+
                // while counting down show it anyway in order to hold the current message position
                if (a <= 0.5/255.0 && centerprint_countdown_num[j] == 0)  // Guaranteed invisible - don't show.
                        continue;
index 4e81d3789d317354b3cbe363cea2c669836be771..117badbec4e1baf80aca961ff8d22042534d8dd2 100644 (file)
@@ -19,6 +19,7 @@ int sbt_num_fields;
 
 string autocvar_hud_fontsize;
 string hud_fontsize_str;
+float max_namesize;
 
 float sbt_bg_alpha;
 float sbt_fg_alpha;
@@ -49,6 +50,7 @@ bool autocvar_hud_panel_scoreboard_table_highlight = true;
 float autocvar_hud_panel_scoreboard_table_highlight_alpha = 0.2;
 float autocvar_hud_panel_scoreboard_table_highlight_alpha_self = 0.4;
 float autocvar_hud_panel_scoreboard_bg_teams_color_team = 0;
+float autocvar_hud_panel_scoreboard_namesize = 15;
 
 bool autocvar_hud_panel_scoreboard_accuracy = true;
 bool autocvar_hud_panel_scoreboard_accuracy_doublerows = false;
@@ -56,6 +58,12 @@ bool autocvar_hud_panel_scoreboard_accuracy_nocolors = false;
 
 bool autocvar_hud_panel_scoreboard_dynamichud = false;
 
+float autocvar_hud_panel_scoreboard_maxheight = 0.5;
+bool autocvar_hud_panel_scoreboard_others_showscore = true;
+bool autocvar_hud_panel_scoreboard_spectators_showping = true;
+bool autocvar_hud_panel_scoreboard_spectators_aligned = false;
+float autocvar_hud_panel_scoreboard_minwidth = 0.4;
+
 
 void drawstringright(vector, string, vector, vector, float, float);
 void drawstringcenter(vector, string, vector, vector, float, float);
@@ -721,18 +729,20 @@ string Scoreboard_FixColumnWidth(int i, string str)
        if(sbt_field[i] == SP_NAME) // name gets all remaining space
        {
                int j;
-               float namesize;
-               namesize = panel_size.x;
+               float remaining_space = 0;
                for(j = 0; j < sbt_num_fields; ++j)
                        if(j != i)
                                if (sbt_field[i] != SP_SEPARATOR)
-                                       namesize -= sbt_field_size[j] + hud_fontsize.x;
-               sbt_field_size[i] = namesize;
+                                       remaining_space += sbt_field_size[j] + hud_fontsize.x;
+               sbt_field_size[i] = panel_size.x - remaining_space;
 
                if (sbt_fixcolumnwidth_iconlen != 0)
-                       namesize -= sbt_fixcolumnwidth_marginlen + sbt_fixcolumnwidth_iconlen * hud_fontsize.x;
+                       remaining_space += sbt_fixcolumnwidth_marginlen + sbt_fixcolumnwidth_iconlen * hud_fontsize.x;
+               float namesize = panel_size.x - remaining_space;
                str = textShortenToWidth(str, namesize, hud_fontsize, stringwidth_colors);
                sbt_fixcolumnwidth_len = stringwidth(str, true, hud_fontsize);
+
+               max_namesize = vid_conwidth - remaining_space;
        }
        else
                sbt_fixcolumnwidth_len = stringwidth(str, false, hud_fontsize);
@@ -747,13 +757,18 @@ string Scoreboard_FixColumnWidth(int i, string str)
 void Scoreboard_initFieldSizes()
 {
        for(int i = 0; i < sbt_num_fields; ++i)
+       {
                sbt_field_size[i] = stringwidth(sbt_field_title[i], false, hud_fontsize);
+               Scoreboard_FixColumnWidth(i, "");
+       }
 }
 
-vector Scoreboard_DrawHeader(vector pos, vector rgb)
+vector Scoreboard_DrawHeader(vector pos, vector rgb, bool other_players)
 {
        int i;
        vector column_dim = eY * panel_size.y;
+       if(other_players)
+               column_dim.y -= 1.25 * hud_fontsize.y;
        vector text_offset = eY * (1.25 - 1) / 2 * hud_fontsize.y;
        pos.x += hud_fontsize.x * 0.5;
        for(i = 0; i < sbt_num_fields; ++i)
@@ -889,12 +904,124 @@ void Scoreboard_DrawItem(vector item_pos, vector rgb, entity pl, bool is_self, i
                drawfill(h_pos, h_size, '0 0 0', 0.5 * panel_fg_alpha, DRAWFLAG_NORMAL);
 }
 
+vector Scoreboard_DrawOthers(vector item_pos, vector rgb, int this_team, entity ignored_pl, entity pl, int pl_number)
+{
+       int i = 0;
+       vector h_pos = item_pos;
+       vector h_size = eX * panel_size.x + eY * hud_fontsize.y * 1.25;
+
+       bool complete = (this_team == NUM_SPECTATOR);
+
+       if(!complete)
+       if((sbt_highlight) && (!(pl_number % 2)))
+               drawfill(h_pos, h_size, rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
+
+       vector pos = item_pos;
+       pos.x += hud_fontsize.x * 0.5;
+       pos.y += (1.25 - 1) / 2 * hud_fontsize.y; // center text vertically
+
+       float width_limit = item_pos.x + panel_size.x - hud_fontsize.x;
+       if(!complete)
+               width_limit -= stringwidth("...", false, hud_fontsize);
+       float namesize = autocvar_hud_panel_scoreboard_namesize * hud_fontsize.x;
+       static float max_name_width = 0;
+       string field = "";
+       float fieldsize = 0;
+       float min_fieldsize = 0;
+       float fieldpadding = hud_fontsize.x * 0.25;
+       if(this_team == NUM_SPECTATOR)
+       {
+               if(autocvar_hud_panel_scoreboard_spectators_showping)
+                       min_fieldsize = stringwidth("999", false, hud_fontsize);
+       }
+       else if(autocvar_hud_panel_scoreboard_others_showscore)
+               min_fieldsize = stringwidth("99", false, hud_fontsize);
+       for(i = 0; pl; pl = pl.sort_next)
+       {
+               if(pl.team != this_team)
+                       continue;
+               if(pl == ignored_pl)
+                       continue;
+
+               field = "";
+               if(this_team == NUM_SPECTATOR)
+               {
+                       if(autocvar_hud_panel_scoreboard_spectators_showping)
+                               field = Scoreboard_GetField(pl, SP_PING);
+               }
+               else if(autocvar_hud_panel_scoreboard_others_showscore)
+                       field = ftos(pl.(scores(ps_primary)));
+
+               string str = textShortenToWidth(entcs_GetName(pl.sv_entnum), namesize, hud_fontsize, stringwidth_colors);
+               float column_width = stringwidth(str, true, hud_fontsize);
+               if((this_team == NUM_SPECTATOR) && autocvar_hud_panel_scoreboard_spectators_aligned)
+               {
+                       if(column_width > max_name_width)
+                               max_name_width = column_width;
+                       column_width = max_name_width;
+               }
+               if(field != "")
+               {
+                       fieldsize = stringwidth(field, false, hud_fontsize);
+                       column_width += hud_fontsize.x * 0.25 + max(fieldsize, min_fieldsize) + 2 * fieldpadding;
+               }
+
+               if(pos.x + column_width > width_limit)
+               {
+                       ++i;
+                       if(!complete)
+                       {
+                               drawstring(pos, "...", hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
+                               break;
+                       }
+                       else
+                       {
+                               pos.x = item_pos.x + hud_fontsize.x * 0.5;
+                               pos.y += hud_fontsize.y * 1.25;
+                       }
+               }
+
+               vector name_pos = pos;
+               if((this_team == NUM_SPECTATOR) && autocvar_hud_panel_scoreboard_spectators_aligned)
+                       name_pos.x += max(fieldsize, min_fieldsize) + 2 * fieldpadding + hud_fontsize.x * 0.25;
+               drawcolorcodedstring(name_pos, str, hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
+               if(field != "")
+               {
+                       h_size.x = max(fieldsize, min_fieldsize) + 2 * fieldpadding;
+                       h_size.y = hud_fontsize.y;
+                       vector field_pos = pos;
+                       if(!((this_team == NUM_SPECTATOR) && autocvar_hud_panel_scoreboard_spectators_aligned))
+                               field_pos.x += column_width - h_size.x;
+                       if(sbt_highlight)
+                               drawfill(field_pos, h_size, '1 1 1', sbt_highlight_alpha, DRAWFLAG_NORMAL);
+                       field_pos.x += fieldpadding + (max(fieldsize, min_fieldsize) - fieldsize) * 0.5;
+                       drawstring(field_pos, field, hud_fontsize, sbt_field_rgb, sbt_fg_alpha, DRAWFLAG_NORMAL);
+               }
+               pos.x += column_width;
+               pos.x += hud_fontsize.x;
+       }
+       return eX * item_pos.x + eY * (item_pos.y + i * hud_fontsize.y * 1.25);
+}
+
 vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 {
-       entity pl;
+       int max_players = 999;
+       if(autocvar_hud_panel_scoreboard_maxheight > 0)
+       {
+               max_players = autocvar_hud_panel_scoreboard_maxheight * vid_conheight;
+               if(teamplay)
+                       max_players = (max_players - hud_fontsize.y * 1.25 - panel_bg_padding * 2) / 2;
+               max_players = floor(max_players / (hud_fontsize.y * 1.25));
+               if(max_players <= 1)
+                       max_players = 1;
+               if(max_players == tm.team_size)
+                       max_players = 999;
+       }
 
+       entity pl;
+       entity me = playerslots[current_player];
        panel_pos = pos;
-       panel_size.y = 1.25 * hud_fontsize.y * (1 + max(1, tm.team_size));
+       panel_size.y = 1.25 * hud_fontsize.y * (1 + bound(1, tm.team_size, max_players));
        panel_size.y += panel_bg_padding * 2;
        HUD_Panel_DrawBg();
 
@@ -924,28 +1051,38 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 
 
        // print header row and highlight columns
-       pos = Scoreboard_DrawHeader(panel_pos, rgb);
+       pos = Scoreboard_DrawHeader(panel_pos, rgb, (max_players < tm.team_size));
 
        // fill the table and draw the rows
+       bool is_self = false;
+       bool self_shown = false;
        int i = 0;
-       if (teamplay)
-               for(pl = players.sort_next; pl; pl = pl.sort_next)
+       for(pl = players.sort_next; pl; pl = pl.sort_next)
+       {
+               if(pl.team != tm.team)
+                       continue;
+               if(i == max_players - 2 && pl != me)
                {
-                       if(pl.team != tm.team)
-                               continue;
-                       Scoreboard_DrawItem(pos, rgb, pl, (pl.sv_entnum == player_localnum), i);
-                       pos.y += 1.25 * hud_fontsize.y;
-                       ++i;
+                       if(!self_shown && me.team == tm.team)
+                       {
+                               Scoreboard_DrawItem(pos, rgb, me, true, i);
+                               self_shown = true;
+                               pos.y += 1.25 * hud_fontsize.y;
+                               ++i;
+                       }
                }
-       else
-               for(pl = players.sort_next; pl; pl = pl.sort_next)
+               if(i >= max_players - 1)
                {
-                       if(pl.team == NUM_SPECTATOR)
-                               continue;
-                       Scoreboard_DrawItem(pos, rgb, pl, (pl.sv_entnum == player_localnum), i);
-                       pos.y += 1.25 * hud_fontsize.y;
-                       ++i;
+                       pos = Scoreboard_DrawOthers(pos, rgb, tm.team, (self_shown ? me : NULL), pl, i);
+                       break;
                }
+               is_self = (pl.sv_entnum == current_player);
+               Scoreboard_DrawItem(pos, rgb, pl, is_self, i);
+               if(is_self)
+                       self_shown = true;
+               pos.y += 1.25 * hud_fontsize.y;
+               ++i;
+       }
 
        panel_size.x += panel_bg_padding * 2; // restore initial width
        return end_pos;
@@ -953,7 +1090,9 @@ vector Scoreboard_MakeTable(vector pos, entity tm, vector rgb, vector bg_size)
 
 bool Scoreboard_WouldDraw()
 {
-       if (QuickMenu_IsOpened())
+       if (MUTATOR_CALLHOOK(DrawScoreboard))
+               return false;
+       else if (QuickMenu_IsOpened())
                return false;
        else if (HUD_Radar_Clickable())
                return false;
@@ -1205,8 +1344,35 @@ vector Scoreboard_Rankings_Draw(vector pos, entity pl, vector rgb, vector bg_siz
                pos.y += panel_bg_border;
 
        panel_pos = pos;
-       panel_size.y = 1.25 * hud_fontsize.y * RANKINGS_RECEIVED_CNT;
+
+       float namesize = 0;
+       for(i = 0; i < RANKINGS_RECEIVED_CNT; ++i)
+       {
+               float f = stringwidth(grecordholder[i], true, hud_fontsize);
+               if(f > namesize)
+                       namesize = f;
+       }
+       bool cut = false;
+       if(namesize > autocvar_hud_panel_scoreboard_namesize * hud_fontsize.x)
+       {
+               namesize = autocvar_hud_panel_scoreboard_namesize * hud_fontsize.x;
+               cut = true;
+       }
+
+       float ranksize = 3 * hud_fontsize.x;
+       float timesize = 5 * hud_fontsize.x;
+       vector columnsize = eX * (ranksize + timesize + namesize + hud_fontsize.x) + eY * 1.25 * hud_fontsize.y;
+       int columns = max(1, floor((panel_size.x - 2 * panel_bg_padding) / columnsize.x));
+       columns = min(columns, RANKINGS_RECEIVED_CNT);
+
+       // expand name column to fill the entire row
+       float available_space = (panel_size.x - 2 * panel_bg_padding - columnsize.x * columns) / columns;
+       namesize += available_space;
+       columnsize.x += available_space;
+
+       panel_size.y = ceil(RANKINGS_RECEIVED_CNT / columns) * 1.25 * hud_fontsize.y;
        panel_size.y += panel_bg_padding * 2;
+
        HUD_Panel_DrawBg();
 
        vector end_pos = panel_pos + eY * (panel_size.y + hud_fontsize.y);
@@ -1220,29 +1386,42 @@ vector Scoreboard_Rankings_Draw(vector pos, entity pl, vector rgb, vector bg_siz
        }
 
        pos = panel_pos;
-       vector tmp = panel_size;
 
        if (sbt_bg_alpha)
-               drawpic_tiled(pos, "gfx/scoreboard/scoreboard_bg", bg_size, tmp, rgb, sbt_bg_alpha, DRAWFLAG_NORMAL);
+               drawpic_tiled(pos, "gfx/scoreboard/scoreboard_bg", bg_size, panel_size, rgb, sbt_bg_alpha, DRAWFLAG_NORMAL);
 
-       // row highlighting
+       vector text_ofs = eX * 0.5 * hud_fontsize.x + eY * (1.25 - 1) / 2 * hud_fontsize.y; // center text vertically
+       string str = "";
+       int column = 0, j = 0;
        for(i = 0; i < RANKINGS_RECEIVED_CNT; ++i)
        {
-               string n, p;
                float t;
                t = grecordtime[i];
                if (t == 0)
                        continue;
-               n = grecordholder[i];
-               p = count_ordinal(i+1);
+
                if(grecordholder[i] == entcs_GetName(player_localnum))
-                       drawfill(pos, eX * panel_size.x + '0 1.25 0' * hud_fontsize.y, hl_rgb, sbt_highlight_alpha_self, DRAWFLAG_NORMAL);
-               else if(!(i % 2) && sbt_highlight)
-                       drawfill(pos, eX * panel_size.x + '0 1.25 0' * hud_fontsize.y, hl_rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
-               drawstring(pos, p, '1 1 0' * hud_fontsize.y, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
-               drawstring(pos + '3 0 0' * hud_fontsize.y, TIME_ENCODED_TOSTRING(t), '1 1 0' * hud_fontsize.y, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
-               drawcolorcodedstring(pos + '8 0 0' * hud_fontsize.y, n, '1 1 0' * hud_fontsize.y, sbt_fg_alpha, DRAWFLAG_NORMAL);
+                       drawfill(pos, columnsize, hl_rgb, sbt_highlight_alpha_self, DRAWFLAG_NORMAL);
+               else if(!((j + column) & 1) && sbt_highlight)
+                       drawfill(pos, columnsize, hl_rgb, sbt_highlight_alpha, DRAWFLAG_NORMAL);
+
+               str = count_ordinal(i+1);
+               drawstring(pos + text_ofs, str, hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
+               drawstring(pos + text_ofs + eX * ranksize, TIME_ENCODED_TOSTRING(t), hud_fontsize, '1 1 1', sbt_fg_alpha, DRAWFLAG_NORMAL);
+               str = grecordholder[i];
+               if(cut)
+                       str = textShortenToWidth(str, namesize, hud_fontsize, stringwidth_colors);
+               drawcolorcodedstring(pos + text_ofs + eX * (ranksize + timesize), str, hud_fontsize, sbt_fg_alpha, DRAWFLAG_NORMAL);
+
                pos.y += 1.25 * hud_fontsize.y;
+               j++;
+               if(j >= ceil(RANKINGS_RECEIVED_CNT / columns))
+               {
+                       column++;
+                       j = 0;
+                       pos.x += panel_size.x / columns;
+                       pos.y = panel_pos.y;
+               }
        }
 
        panel_size.x += panel_bg_padding * 2; // restore initial width
@@ -1308,15 +1487,17 @@ void Scoreboard_Draw()
        if(!autocvar__hud_configure)
                panel_pos.y = max((autocvar_con_notify * autocvar_con_notifysize), panel_pos.y);
 
+       float excess = max(0, max_namesize - autocvar_hud_panel_scoreboard_namesize * hud_fontsize.x);
+       float fixed_scoreboard_width = bound(vid_conwidth * autocvar_hud_panel_scoreboard_minwidth, vid_conwidth - excess, vid_conwidth * 0.93);
+       panel_pos.x = 0.5 * (vid_conwidth - fixed_scoreboard_width);
+       panel_size.x = fixed_scoreboard_width;
+
        Scoreboard_UpdatePlayerTeams();
 
-       vector pos, tmp;
+       vector pos = panel_pos;
        entity pl, tm;
        string str;
 
-       // Initializes position
-       pos = panel_pos;
-
        // Heading
        vector sb_heading_fontsize;
        sb_heading_fontsize = hud_fontsize * 2;
@@ -1371,12 +1552,10 @@ void Scoreboard_Draw()
        else
        {
                for(tm = teams.sort_next; tm; tm = tm.sort_next)
-               {
-                       if(tm.team == NUM_SPECTATOR)
-                               continue;
-
-                       pos = Scoreboard_MakeTable(pos, tm, panel_bg_color, bg_size);
-               }
+                       if(tm.team != NUM_SPECTATOR)
+                               break;
+               // display it anyway
+               pos = Scoreboard_MakeTable(pos, tm, panel_bg_color, bg_size);
        }
 
        if(gametype == MAPINFO_TYPE_CTS || gametype == MAPINFO_TYPE_RACE) {
@@ -1396,23 +1575,24 @@ void Scoreboard_Draw()
        pos = Scoreboard_MapStats_Draw(pos, panel_bg_color, bg_size);
 
        // List spectators
-       float specs = 0;
-       tmp = pos;
        for(pl = players.sort_next; pl; pl = pl.sort_next)
        {
-               if(pl.team != NUM_SPECTATOR)
-                       continue;
-               pos.y += 1.25 * hud_fontsize.y;
-               Scoreboard_DrawItem(pos, '0 0 0', pl, (pl.sv_entnum == player_localnum), specs);
-               ++specs;
-       }
+               if(pl.team == NUM_SPECTATOR)
+               {
+                       for(tm = teams.sort_next; tm; tm = tm.sort_next)
+                               if(tm.team == NUM_SPECTATOR)
+                                       break;
+                       str = sprintf("%s (%d)", _("Spectators"), tm.team_size);
+                       draw_beginBoldFont();
+                       drawstring(pos, str, hud_fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                       draw_endBoldFont();
+                       pos.y += 1.25 * hud_fontsize.y;
 
-       if(specs)
-       {
-               draw_beginBoldFont();
-               drawstring(tmp, _("Spectators"), hud_fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-               draw_endBoldFont();
-               pos.y += 1.25 * hud_fontsize.y;
+                       pos = Scoreboard_DrawOthers(pos, '0 0 0', pl.team, NULL, pl, 0);
+                       pos.y += 1.25 * hud_fontsize.y;
+
+                       break;
+               }
        }
 
        // Print info string
index a852fdbe472437e96c4ffbbf9a2f5bd498f2335a..74090e14d6992749c8b747c04894a20279c8d7bf 100644 (file)
@@ -88,6 +88,15 @@ MUTATOR_HOOKABLE(GetModelParams, EV_GetModelParams);
        /**/
 MUTATOR_HOOKABLE(WantEventchase, EV_WantEventchase);
 
+/** allow customizing 3rd person mode effect */
+#define EV_CustomizeEventchase(i, o) \
+       /** entity id */ i(entity, MUTATOR_ARGV_0_entity) \
+       /* current_view_origin_override */ o(vector, MUTATOR_ARGV_0_vector) \
+       /* view_offset_override */ o(vector, MUTATOR_ARGV_1_vector) \
+       /* chase_distance_override */ o(float, MUTATOR_ARGV_0_float) \
+       /**/
+MUTATOR_HOOKABLE(CustomizeEventchase, EV_CustomizeEventchase);
+
 #define EV_AnnouncerOption(i, o) \
        /** announcer string */  i(string, MUTATOR_ARGV_0_string) \
        /** announcer string */ o(string, MUTATOR_ARGV_0_string) \
@@ -145,3 +154,6 @@ MUTATOR_HOOKABLE(Ent_Update, EV_Ent_Update);
 
 /** Return true to not draw crosshair */
 MUTATOR_HOOKABLE(DrawCrosshair, EV_NO_ARGS);
+
+/** Return true to not draw scoreboard */
+MUTATOR_HOOKABLE(DrawScoreboard, EV_NO_ARGS);
index 146e306a08fd091a852d3b8097a84a23e56626c3..66827c8f30e3bdc2bfeb9508ce64a5a69bf86bea 100644 (file)
@@ -1,10 +1,12 @@
 #include "player_skeleton.qh"
 
+#include <common/physics/movetypes/movetypes.qh>
 #include "mutators/events.qh"
 #include "../lib/csqcmodel/cl_player.qh"
 #include "../lib/warpzone/anglestransform.qh"
 
 .vector v_angle;
+.float v_angle_save_x;
 
 class(Skeleton) .float skeleton_info_modelindex;
 class(Skeleton) .float skeleton_info_skin;
@@ -178,14 +180,23 @@ void skeleton_from_frames(entity e, bool is_dead)
 
        if(!is_dead)
        {
-               if(e == csqcplayer && !intermission)
-                       e.v_angle_x = input_angles_x;
+               if(e == csqcplayer)
+               {
+                       if(e.move_movetype == MOVETYPE_NONE)
+                       {
+                               if(!e.v_angle_save_x)
+                                       e.v_angle_save_x = input_angles.x;
+                               e.v_angle_x = e.v_angle_save_x;
+                       }
+                       else
+                               e.v_angle_x = input_angles.x;
+               }
                int i;
                for(i = 0; i < MAX_AIM_BONES; ++i)
                {
                        if(e.(bone_aim[i]))
                        {
-                               vector aim = '1 0 0' * bound(-90, e.v_angle.x, 90) * e.(bone_aimweight[i]);
+                               vector aim = '1 0 0' * bound(-90, e.v_angle_x, 90) * e.(bone_aimweight[i]);
                                vector org = skel_get_boneabs(s, e.(bone_aim[i]));
                                vector ang_cur = fixedvectoangles2(v_forward, v_up);
                                vector ang = AnglesTransform_Multiply(aim, ang_cur);
index e5f8b6a580969ee76a0687fd19aee735a756afa1..3134a24ed28fed2c9b917d4d279b31053dee9b46 100644 (file)
@@ -1490,8 +1490,6 @@ void CSQC_UpdateView(entity this, float w, float h)
                        cvar_set("chase_active", "0");
 
                float vehicle_chase = (hud != HUD_NORMAL && (autocvar_cl_eventchase_vehicle || spectatee_status > 0));
-               float ons_roundlost = (gametype == MAPINFO_TYPE_ONSLAUGHT && STAT(ROUNDLOST));
-               entity gen = NULL;
 
                float vehicle_viewdist = 0;
                vector vehicle_viewofs = '0 0 0';
@@ -1506,18 +1504,18 @@ void CSQC_UpdateView(entity this, float w, float h)
                        }
                }
 
-               if(ons_roundlost) // TODO: move this junk to a client mutator for onslaught (possible using the WantEventchase hook)
+               if(WantEventchase(this))
                {
-                       IL_EACH(g_onsgenerators, it.health <= 0,
+                       vector current_view_origin_override = '0 0 0';
+                       vector view_offset_override = '0 0 0';
+                       float chase_distance_override = 0;
+                       bool custom_eventchase = MUTATOR_CALLHOOK(CustomizeEventchase, this);
+                       if(custom_eventchase)
                        {
-                               gen = it;
-                               break;
-                       });
-                       if(!gen)
-                               ons_roundlost = false; // don't enforce the 3rd person camera if there is no dead generator to show
-               }
-               if(WantEventchase(this) || (!autocvar_cl_orthoview && ons_roundlost))
-               {
+                               current_view_origin_override = M_ARGV(0, vector);
+                               view_offset_override = M_ARGV(1, vector);
+                               chase_distance_override = M_ARGV(0, float);
+                       }
                        eventchase_running = true;
 
                        entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1));
@@ -1526,7 +1524,8 @@ void CSQC_UpdateView(entity this, float w, float h)
 
                        // make special vector since we can't use view_origin (It is one frame old as of this code, it gets set later with the results this code makes.)
                        vector current_view_origin = (csqcplayer ? csqcplayer.origin : pmove_org);
-                       if(ons_roundlost) { current_view_origin = gen.origin; }
+                       if (custom_eventchase)
+                               current_view_origin = current_view_origin_override;
 
                        // detect maximum viewoffset and use it
                        vector view_offset = autocvar_cl_eventchase_viewoffset;
@@ -1537,7 +1536,8 @@ void CSQC_UpdateView(entity this, float w, float h)
                                else
                                        view_offset = autocvar_cl_eventchase_vehicle_viewoffset;
                        }
-                       if(ons_roundlost) { view_offset = autocvar_cl_eventchase_generator_viewoffset; }
+                       if (custom_eventchase)
+                               view_offset = view_offset_override;
 
                        if(view_offset)
                        {
@@ -1560,7 +1560,8 @@ void CSQC_UpdateView(entity this, float w, float h)
                                else
                                        chase_distance = autocvar_cl_eventchase_vehicle_distance;
                        }
-                       if(ons_roundlost) { chase_distance = autocvar_cl_eventchase_generator_distance; }
+                       if (custom_eventchase)
+                               chase_distance = chase_distance_override;
 
                        if(autocvar_cl_eventchase_speed && eventchase_current_distance < chase_distance)
                                eventchase_current_distance += autocvar_cl_eventchase_speed * (chase_distance - eventchase_current_distance) * frametime; // slow down the further we get
index 01a86bb1ee44d2490402cac124a41b35c1229715..64916ad8c17d05251f940ed0ae9e02e340ffb8bf 100644 (file)
@@ -213,11 +213,11 @@ NET_HANDLE(ENT_CLIENT_WALL, bool isnew)
                        this.movedir_z = ReadCoord();
                        this.lip = ReadByte() / 255.0;
                }
-               this.fade_start = ReadShort();
-               this.fade_end = ReadShort();
-               this.alpha_max = ReadShort();
-               this.alpha_min = ReadShort();
-               this.inactive = ReadShort();
+               this.fade_start = ReadByte();
+               this.fade_end = ReadByte();
+               this.alpha_max = ReadByte();
+               this.alpha_min = ReadByte();
+               this.inactive = ReadByte();
                this.fade_vertical_offset = ReadShort();
                BGMScript_InitEntity(this);
        }
index 181511cc1a1cb819e4ddf94ea691038647bdfd2f..29f96aa4490b527ecab33592689534fb358c16ec 100644 (file)
@@ -179,9 +179,9 @@ REGISTER_SP(RACE_TIME);
 REGISTER_SP(RACE_LAPS);
 REGISTER_SP(RACE_FASTEST);
 
-REGISTER_SP(CTS_TIME);
-REGISTER_SP(CTS_LAPS);
-REGISTER_SP(CTS_FASTEST);
+//REGISTER_SP(CTS_TIME);
+//REGISTER_SP(CTS_LAPS);
+//REGISTER_SP(CTS_FASTEST);
 
 REGISTER_SP(ASSAULT_OBJECTIVES);
 
index 17ee08e7cf14937037696112f4a7edf941c2ab4e..a89e84a03725d7f8ff16525ef81faa52e9d81d49 100644 (file)
@@ -11,43 +11,43 @@ MACRO_END
 MACRO_END
 
 // #define PROP(public, fld, set, sv, cl)
-#define ENTCS_NETPROPS(PROP) PROP(false, sv_entnum, ENTCS_SET_NORMAL, {}, {}) /* sentinel */ \
+#define ENTCS_NETPROPS(ent, PROP) PROP(false, sv_entnum, ENTCS_SET_NORMAL, {}, {}) /* sentinel */ \
        PROP(false, origin, ENTCS_SET_NORMAL, \
-       { WriteShort(chan, this.origin.x);  WriteShort(chan, this.origin.y); \
-         WriteShort(chan, this.origin.z); }, \
-       { this.has_sv_origin = true; vector v; v.x = ReadShort(); v.y = ReadShort(); v.z = ReadShort(); setorigin(this, v); }) \
+       { WriteShort(chan, ent.origin.x);  WriteShort(chan, ent.origin.y); \
+         WriteShort(chan, ent.origin.z); }, \
+       { ent.has_sv_origin = true; vector v; v.x = ReadShort(); v.y = ReadShort(); v.z = ReadShort(); setorigin(ent, v); }) \
     \
        PROP(false, angles_y, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.angles.y / 360 * 256); }, \
-       { vector v = '0 0 0'; v.y = ReadByte() / 256 * 360; this.angles = v; }) \
+       { WriteByte(chan, ent.angles.y / 360 * 256); }, \
+       { vector v = '0 0 0'; v.y = ReadByte() / 256 * 360; ent.angles = v; }) \
     \
        PROP(false, health, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, bound(0, this.health / 10, 255));  /* FIXME: use a better scale? */ }, \
-       { this.healthvalue = ReadByte() * 10; }) \
+       { WriteByte(chan, bound(0, ent.health / 10, 255));  /* FIXME: use a better scale? */ }, \
+       { ent.healthvalue = ReadByte() * 10; }) \
     \
        PROP(false, armorvalue, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, bound(0, this.armorvalue / 10, 255));  /* FIXME: use a better scale? */ }, \
-       { this.armorvalue = ReadByte() * 10; }) \
+       { WriteByte(chan, bound(0, ent.armorvalue / 10, 255));  /* FIXME: use a better scale? */ }, \
+       { ent.armorvalue = ReadByte() * 10; }) \
     \
        PROP(true, netname, ENTCS_SET_MUTABLE_STRING, \
-       { WriteString(chan, this.netname); }, \
-       { if (this.netname) strunzone(this.netname); this.netname = strzone(ReadString()); }) \
+       { WriteString(chan, ent.netname); }, \
+       { if (ent.netname) strunzone(ent.netname); ent.netname = strzone(ReadString()); }) \
     \
        PROP(true, model, ENTCS_SET_NORMAL, \
-       { WriteString(chan, this.model); }, \
-       { if (this.model) strunzone(this.model); this.model = strzone(ReadString()); }) \
+       { WriteString(chan, ent.model); }, \
+       { if (ent.model) strunzone(ent.model); ent.model = strzone(ReadString()); }) \
     \
        PROP(true, skin, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.skin); }, \
-       { this.skin = ReadByte(); }) \
+       { WriteByte(chan, ent.skin); }, \
+       { ent.skin = ReadByte(); }) \
     \
     PROP(true, clientcolors, ENTCS_SET_NORMAL, \
-       { WriteByte(chan, this.clientcolors); }, \
-       { this.colormap = ReadByte(); }) \
+       { WriteByte(chan, ent.clientcolors); }, \
+       { ent.colormap = ReadByte(); }) \
     \
     PROP(true, frags, ENTCS_SET_NORMAL, \
-       { WriteShort(chan, this.frags); }, \
-       { this.frags = ReadShort(); }) \
+       { WriteShort(chan, ent.frags); }, \
+       { ent.frags = ReadShort(); }) \
     \
        /**/
 
@@ -63,7 +63,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
                if (i >= BITS(16 - 1)) LOG_FATAL("Exceeded ENTCS_NETPROPS limit");
        }
@@ -93,7 +93,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
                return true;
        }
@@ -115,7 +115,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(this, X);
        #undef X
            setorigin(this, this.origin);  // relink
        }
@@ -214,7 +214,7 @@ MACRO_END
                        } \
                        i += 1; \
                }
-               ENTCS_NETPROPS(X);
+               ENTCS_NETPROPS(e, X);
        #undef X
                e.iflags |= IFLAG_ORIGIN;
                InterpolateOrigin_Note(e);
index 0054fd63607b1523c5b729382e1fe52c593da6d9..d67ce5ff070ed640bfa70c342907e803616951ec 100644 (file)
@@ -34,6 +34,7 @@ float autocvar_g_nexball_football_bouncestop;
 bool autocvar_g_nexball_radar_showallplayers;
 bool autocvar_g_nexball_sound_bounce;
 int autocvar_g_nexball_trail_color;
+bool autocvar_g_nexball_playerclip_collisions = true;
 
 float autocvar_g_nexball_safepass_turnrate;
 float autocvar_g_nexball_safepass_maxdist;
@@ -103,9 +104,9 @@ void nexball_setstatus(entity this)
        {
                if(this.ballcarried.teamtime && (this.ballcarried.teamtime < time))
                {
-                       bprint("The ", Team_ColoredFullName(this.team), " held the ball for too long.\n");
-                       DropBall(this.ballcarried, this.ballcarried.owner.origin, '0 0 0');
+                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_NEXBALL_RETURN_HELD));
                        entity e = this.ballcarried;
+                       DropBall(this.ballcarried, this.ballcarried.owner.origin, '0 0 0');
                        ResetBall(e);
                }
                else
@@ -255,7 +256,7 @@ void ResetBall(entity this)
        if(this.cnt < 2)        // step 1
        {
                if(time == this.teamtime)
-                       bprint("The ", Team_ColoredFullName(this.team), " held the ball for too long.\n");
+                       Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(this.team, INFO_NEXBALL_RETURN_HELD));
 
                settouch(this, func_null);
                set_movetype(this, MOVETYPE_NOCLIP);
@@ -552,6 +553,9 @@ void SpawnBall(entity this)
 
        set_movetype(this, MOVETYPE_FLY);
 
+       if(autocvar_g_nexball_playerclip_collisions)
+               this.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_SOLID | DPCONTENTS_PLAYERCLIP;
+
        if(!autocvar_g_nexball_sound_bounce)
                this.noise = "";
        else if(this.noise == "")
@@ -1086,7 +1090,7 @@ MUTATOR_HOOKFUNCTION(nb, ItemTouch)
        return MUT_ITEMTOUCH_CONTINUE;
 }
 
-MUTATOR_HOOKFUNCTION(nb, GetTeamCount)
+MUTATOR_HOOKFUNCTION(nb, CheckAllowedTeams)
 {
        M_ARGV(1, string) = "nexball_team";
        return true;
index cbba9a9aaa87bc23d183b18b224f9fd508d91080..ac7a066ab17032c3fb0ae3733bdd8ead99c686c8 100644 (file)
@@ -14,6 +14,7 @@ void ons_generator_ray_draw(entity this)
 
        if(this.count > 10)
        {
+               IL_REMOVE(g_drawables, this);
                delete(this);
                return;
        }
@@ -149,7 +150,10 @@ void generator_construct(entity this, bool isnew)
        this.classname = "onslaught_generator";
 
        if(isnew)
+       {
                IL_PUSH(g_onsgenerators, this);
+               IL_PUSH(g_drawables, this);
+       }
 
        setorigin(this, this.origin);
        setmodel(this, MDL_ONS_GEN);
index 36926b754b0bcb8f0c92b4f1c734d8391c3cafc6..afbd31842978a332d81c4a3d914a2202799fddae 100644 (file)
@@ -1 +1,70 @@
 #include "onslaught.qh"
+
+#ifndef MENUQC
+REGISTER_NET_LINKED(ENT_ONSCAMERA)
+#endif
+
+#ifdef CSQC
+
+entity generator_camera;
+NET_HANDLE(ENT_ONSCAMERA, bool isnew)
+{
+       this.origin_x = ReadCoord();
+       this.origin_y = ReadCoord();
+       this.origin_z = ReadCoord();
+       setorigin(this, this.origin);
+
+       this.angles_x = ReadAngle();
+       this.angles_y = ReadAngle();
+       this.angles_z = ReadAngle();
+
+       this.drawmask  = MASK_NORMAL;
+       setmodel(this, MDL_Null); // give it a size for clientcamera
+       setsize(this, '-1 -1 -1', '1 1 1');
+
+       generator_camera = this;
+       return true;
+}
+
+REGISTER_MUTATOR(cl_ons, true);
+
+float ons_roundlost;
+vector generator_origin;
+vector autocvar_cl_eventchase_generator_viewoffset = '0 0 80';
+float autocvar_cl_eventchase_generator_distance = 400;
+MUTATOR_HOOKFUNCTION(cl_ons, WantEventchase)
+{
+       ons_roundlost = STAT(ROUNDLOST);
+       entity gen = NULL;
+       if(ons_roundlost)
+       {
+               IL_EACH(g_onsgenerators, it.health <= 0,
+               {
+                       gen = it;
+                       break;
+               });
+               if(!gen)
+                       ons_roundlost = false; // don't enforce the 3rd person camera if there is no dead generator to show
+       }
+
+       if(ons_roundlost)
+       {
+               generator_origin = gen.origin;
+               return true;
+       }
+       return false;
+}
+
+MUTATOR_HOOKFUNCTION(cl_ons, CustomizeEventchase)
+{
+       if(ons_roundlost)
+       {
+               M_ARGV(0, vector) = generator_camera.origin;
+               M_ARGV(1, vector) = autocvar_cl_eventchase_generator_viewoffset;
+               M_ARGV(0, float) = autocvar_cl_eventchase_generator_distance;
+               return true;
+       }
+       return false;
+}
+
+#endif
index 491acdd007d8635cac7417c2bd5acdc11c6cff95..0941833de8acd7430cc7fb35cef56c104bf405bf 100644 (file)
@@ -5,6 +5,8 @@
 bool cpicon_send(entity this, entity to, int sf)
 {
        WriteHeader(MSG_ENTITY, ENT_CLIENT_CONTROLPOINT_ICON);
+       if(sf & CPSF_SETUP)
+               sf &= ~CPSF_STATUS;
        WriteByte(MSG_ENTITY, sf);
        if(sf & CPSF_SETUP)
        {
index 8e60bc30897a4ac897ea19c594630b68987989a3..572611c5d3f874169b7312c224888758d64f26a3 100644 (file)
@@ -28,11 +28,27 @@ float autocvar_g_onslaught_spawn_choose;
 float autocvar_g_onslaught_click_radius;
 
 void FixSize(entity e);
+entity cam;
 
 // =======================
 // CaptureShield Functions
 // =======================
 
+bool clientcamera_send(entity this, entity to, int sf)
+{
+       WriteHeader(MSG_ENTITY, ENT_ONSCAMERA);
+
+       WriteCoord(MSG_ENTITY, this.origin_x);
+       WriteCoord(MSG_ENTITY, this.origin_y);
+       WriteCoord(MSG_ENTITY, this.origin_z);
+
+       WriteAngle(MSG_ENTITY, this.angles_x);
+       WriteAngle(MSG_ENTITY, this.angles_y);
+       WriteAngle(MSG_ENTITY, this.angles_z);
+
+       return true;
+}
+
 bool ons_CaptureShield_Customize(entity this, entity client)
 {
        entity e = WaypointSprite_getviewentity(client);
@@ -817,6 +833,41 @@ void ons_Generator_UpdateSprite(entity e)
        }
 }
 
+void ons_camSetup(entity this)
+{
+       vector dir;
+       vector ang = '0 0 0';
+       vector best_ang = '0 0 0';
+       float best_trace_fraction = 0;
+       while(ang.y < 360)
+       {
+               dir = eX * cos(ang.y * DEG2RAD) + eY * sin(ang.y * DEG2RAD);
+               dir *= 500;
+               traceline(this.origin, this.origin - dir, MOVE_WORLDONLY, this);
+               if(trace_fraction > best_trace_fraction)
+               {
+                       best_trace_fraction = trace_fraction;
+                       best_ang = ang;
+                       if(trace_fraction == 1)
+                               break;
+               }
+               ang.y += 90;
+               if(ang.y == 360)
+                       ang.y = 45;
+       }
+       cam.origin = this.origin;
+       setorigin(cam, cam.origin);
+       cam.angles = best_ang;
+       Net_LinkEntity(cam, false, 0, clientcamera_send);
+
+       FOREACH_CLIENT(true, it.clientcamera = cam;);
+
+       WriteByte(MSG_ALL, SVC_SETVIEWANGLES);
+       WriteAngle(MSG_ALL, cam.angles_x);
+       WriteAngle(MSG_ALL, cam.angles_y);
+       WriteAngle(MSG_ALL, cam.angles_z);
+}
+
 void ons_GeneratorDamage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
 {
        if(damage <= 0) { return; }
@@ -827,7 +878,7 @@ void ons_GeneratorDamage(entity this, entity inflictor, entity attacker, float d
        {
                if (this.isshielded)
                {
-                       // this is protected by a shield, so ignore the damage
+                       // generator is protected by a shield, so ignore the damage
                        if (time > this.pain_finished)
                                if (IS_PLAYER(attacker))
                                {
@@ -877,6 +928,8 @@ void ons_GeneratorDamage(entity this, entity inflictor, entity attacker, float d
                //WaypointSprite_Kill(this.sprite); // can't do this yet, code too poor
 
                onslaught_updatelinks();
+
+               ons_camSetup(this);
        }
 
        // Throw some flaming gibs on damage, more damage = more chance for gib
@@ -926,7 +979,8 @@ void ons_GeneratorReset(entity this)
        this.lasthealth = this.max_health = this.health = autocvar_g_onslaught_gen_health;
        this.takedamage = DAMAGE_AIM;
        this.bot_attack = true;
-       IL_PUSH(g_bot_targets, this);
+       if(!IL_CONTAINS(g_bot_targets, this))
+               IL_PUSH(g_bot_targets, this);
        this.iscaptured = true;
        this.islinked = true;
        this.isshielded = true;
@@ -1621,6 +1675,7 @@ MUTATOR_HOOKFUNCTION(ons, reset_map_global)
                STAT(ROUNDLOST, it) = false;
                it.ons_deathloc = '0 0 0';
                PutClientInServer(it);
+               it.clientcamera = it;
        });
        return false;
 }
@@ -1685,7 +1740,7 @@ MUTATOR_HOOKFUNCTION(ons, PlayerSpawn)
                {
                        if(SAME_TEAM(tmp_entity, player))
                        if(random_target)
-                               RandomSelection_Add(tmp_entity, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(tmp_entity, 1, 1);
                        else if(vlen2(tmp_entity.origin - spawn_loc) <= vlen2(closest_target.origin - spawn_loc) || closest_target == NULL)
                                closest_target = tmp_entity;
                }
@@ -1732,7 +1787,7 @@ MUTATOR_HOOKFUNCTION(ons, PlayerSpawn)
                for(tmp_entity = ons_worldgeneratorlist; tmp_entity; tmp_entity = tmp_entity.ons_worldgeneratornext)
                {
                        if(random_target)
-                               RandomSelection_Add(tmp_entity, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(tmp_entity, 1, 1);
                        else
                        {
                                if(SAME_TEAM(tmp_entity, player))
@@ -1871,7 +1926,7 @@ MUTATOR_HOOKFUNCTION(ons, HavocBot_ChooseRole)
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(ons, GetTeamCount)
+MUTATOR_HOOKFUNCTION(ons, CheckAllowedTeams)
 {
        // onslaught is special
        for(entity tmp_entity = ons_worldgeneratorlist; tmp_entity; tmp_entity = tmp_entity.ons_worldgeneratornext)
@@ -2137,5 +2192,7 @@ void ons_Initialize()
        g_onslaught = true;
        ons_captureshield_force = autocvar_g_onslaught_shield_force;
 
+       cam = new(objective_camera);
+
        InitializeEntity(NULL, ons_DelayedInit, INITPRIO_GAMETYPE);
 }
index 750ade34b412ece9a6b8a868c4cc747367407ae1..d8b7fd044bcc8e8f5faf4a76dcbac1dbb451dee6 100644 (file)
@@ -48,12 +48,10 @@ entity ons_worldgeneratorlist;
 // list of control points on the map
 entity ons_worldcplist;
 .entity ons_worldcpnext;
-.entity ons_stalecpnext;
 
 // list of links on the map
 entity ons_worldlinklist;
 .entity ons_worldlinknext;
-.entity ons_stalelinknext;
 
 // definitions
 .entity sprite;
index 7120c61eda932fa46b9cc2313dc26c8854549293..2af3d90823e9dcddee7f187889ca50e2da4eddf2 100644 (file)
@@ -1151,12 +1151,14 @@ Gametype MapInfo_CurrentGametype()
        return prev ? prev : MAPINFO_TYPE_DEATHMATCH;
 }
 
-float _MapInfo_CheckMap(string s) // returns 0 if the map can't be played with the current settings, 1 otherwise
+float _MapInfo_CheckMap(string s, bool gametype_only) // returns 0 if the map can't be played with the current settings, 1 otherwise
 {
        if(!MapInfo_Get_ByName(s, 1, NULL))
                return 0;
        if((MapInfo_Map_supportedGametypes & MapInfo_CurrentGametype().m_flags) == 0)
                return 0;
+       if (gametype_only)
+               return 1;
        if((MapInfo_Map_supportedFeatures & MapInfo_CurrentFeatures()) != MapInfo_CurrentFeatures())
                return 0;
        return 1;
@@ -1165,7 +1167,7 @@ float _MapInfo_CheckMap(string s) // returns 0 if the map can't be played with t
 float MapInfo_CheckMap(string s) // returns 0 if the map can't be played with the current settings, 1 otherwise
 {
        float r;
-       r = _MapInfo_CheckMap(s);
+       r = _MapInfo_CheckMap(s, false);
        MapInfo_ClearTemps();
        return r;
 }
@@ -1237,7 +1239,7 @@ void MapInfo_LoadMapSettings(string s) // to be called from worldspawn
        Gametype t = MapInfo_CurrentGametype();
        MapInfo_LoadMapSettings_SaveGameType(t);
 
-       if(!_MapInfo_CheckMap(s)) // with underscore, it keeps temps
+       if(!_MapInfo_CheckMap(s, true)) // with underscore, it keeps temps
        {
                if(cvar("g_mapinfo_allow_unsupported_modes_and_let_stuff_break"))
                {
@@ -1268,6 +1270,9 @@ void MapInfo_LoadMapSettings(string s) // to be called from worldspawn
                LOG_WARNF("can't play the selected map in the given game mode (%s). Falling back to a supported mode (%s).", t_prev.mdl, t.mdl);
                MapInfo_LoadMapSettings_SaveGameType(t);
        }
+       if(!_MapInfo_CheckMap(s, false)) { // with underscore, it keeps temps
+               LOG_WARNF("the selected map lacks features required by current settings; playing anyway.");
+       }
        MapInfo_Get_ByName(s, 1, t);
 }
 
index 31ae9d947912f993571072e8ed89ab551ecfa302..911d19d3709f3764d921cca763e36b262f31c7f2 100644 (file)
@@ -17,7 +17,7 @@ const int BD_TILE_SIZE = 20;
 
 const int BD_TEAMS = 1;
 
-.vector bd_dir;
+.int bd_dir;
 
 .int bd_moves;
 
@@ -42,6 +42,11 @@ const int BD_TILE_BRICK7 = 10;
 const int BD_TILE_BRICK8 = 11;
 const int BD_TILE_LAST = 11;
 
+const int BD_DIR_UP = 0;
+const int BD_DIR_DN = 1;
+const int BD_DIR_LF = 2;
+const int BD_DIR_RT = 3;
+
 string autocvar_sv_minigames_bulldozer_startlevel = "level1";
 
 // find same game piece given its tile name
@@ -92,6 +97,44 @@ void bd_check_winner(entity minig)
        }
 }
 
+vector bd_get_dir(int bdir)
+{
+       switch(bdir)
+       {
+               case BD_DIR_UP: return '0 1 0'; // up
+               default:
+               case BD_DIR_DN: return '0 -1 0'; // down
+               case BD_DIR_LF: return '-1 0 0'; // left
+               case BD_DIR_RT: return '1 0 0'; // right
+       }
+}
+
+string bd_get_dir_name(int bdir)
+{
+       switch(bdir)
+       {
+               case BD_DIR_UP: return "u"; // up
+               default:
+               case BD_DIR_DN: return "d"; // down
+               case BD_DIR_LF: return "l"; // left
+               case BD_DIR_RT: return "r"; // right
+       }
+}
+
+int bd_dir_fromname(string bdir)
+{
+       if(bdir == "up" || bdir == "u")
+               return BD_DIR_UP; // up
+       if(bdir == "down" || bdir == "dn" || bdir == "d")
+               return BD_DIR_DN; /// down
+       if(bdir == "left" || bdir == "lt" || bdir == "l")
+               return BD_DIR_LF; // left
+       if(bdir == "right" || bdir == "rt" || bdir == "r")
+               return BD_DIR_RT; // right
+
+       return BD_DIR_DN; // down
+}
+
 bool bd_canfill(int ttype)
 {
        switch(ttype)
@@ -111,14 +154,16 @@ bool bd_canfill(int ttype)
 
 bool bd_move_dozer(entity minigame, entity dozer)
 {
-       if(!dozer.bd_dir_x && !dozer.bd_dir_y)
-               return false; // nope!
+       //if(!dozer.bd_dir)
+               //return false; // nope!
 
        int myx = minigame_tile_letter(dozer.netname);
        int myy = minigame_tile_number(dozer.netname);
 
-       myx += dozer.bd_dir_x;
-       myy += dozer.bd_dir_y;
+       vector dir = bd_get_dir(dozer.bd_dir);
+
+       myx += dir.x;
+       myy += dir.y;
 
        string newpos = minigame_tile_buildname(myx, myy);
        entity hit = bd_find_piece(minigame, newpos, false);
@@ -144,8 +189,8 @@ bool bd_move_dozer(entity minigame, entity dozer)
                        int tx = minigame_tile_letter(hit.netname);
                        int ty = minigame_tile_number(hit.netname);
 
-                       tx += dozer.bd_dir_x;
-                       ty += dozer.bd_dir_y;
+                       tx += dir.x;
+                       ty += dir.y;
 
                        testpos = minigame_tile_buildname(tx, ty);
                        entity testhit = bd_find_piece(minigame, testpos, false);
@@ -182,24 +227,15 @@ void bd_move(entity minigame, entity player, string dir)
                                return; // should not happen... TODO: end match?
                        }
 
-                       int dxs = 0, dys = 0;
                        string thedir = strtolower(dir);
-                       if(thedir == "up" || thedir == "u") { dxs = 0; dys = 1; }
-                       if(thedir == "down" || thedir == "dn" || thedir == "d") { dxs = 0; dys = -1; }
-                       if(thedir == "left" || thedir == "lt" || thedir == "l") { dxs = -1; dys = 0; }
-                       if(thedir == "right" || thedir == "rt" || thedir == "r") { dxs = 1; dys = 0; }
-
-                       int dx = bound(-1, dxs, 1);
-                       int dy = bound(-1, dys, 1);
+                       int bdir = bd_dir_fromname(thedir);
 
                        int moved = 0;
                        entity e = NULL;
                        while ( ( e = findentity(e,owner,minigame) ) )
                                if ( e.classname == "minigame_board_piece" && e.bd_tiletype == BD_TILE_DOZER )
                                {
-                                       e.bd_dir_x = dx;
-                                       e.bd_dir_y = dy;
-                                       e.bd_dir_z = 0;
+                                       e.bd_dir = bdir;
 
                                        if(bd_move_dozer(minigame, e))
                                                ++moved;
@@ -231,19 +267,10 @@ void bd_editor_place(entity minigame, entity player, string pos, int thetile, st
 
                        if(found_piece.bd_tiletype == BD_TILE_DOZER && thedir != "")
                        {
-                               int dxs = 0, dys = 0;
                                string newdir = strtolower(thedir);
-                               if(newdir == "up" || newdir == "u") { dxs = 0; dys = 1; }
-                               if(newdir == "down" || newdir == "dn" || newdir == "d") { dxs = 0; dys = -1; }
-                               if(newdir == "left" || newdir == "lt" || newdir == "l") { dxs = -1; dys = 0; }
-                               if(newdir == "right" || newdir == "rt" || newdir == "r") { dxs = 1; dys = 0; }
+                               int bdir = bd_dir_fromname(newdir);
 
-                               int dx = bound(-1, dxs, 1);
-                               int dy = bound(-1, dys, 1);
-
-                               found_piece.bd_dir_x = dx;
-                               found_piece.bd_dir_y = dy;
-                               found_piece.bd_dir_z = 0;
+                               found_piece.bd_dir = bdir;
                                minigame_server_sendflags(found_piece,MINIG_SF_UPDATE); // update anyway
                                return;
                        }
@@ -269,7 +296,7 @@ void bd_editor_place(entity minigame, entity player, string pos, int thetile, st
                        piece.team = 1;
                        piece.netname = strzone(pos);
                        piece.bd_tiletype = thetile;
-                       piece.bd_dir = '0 -1 0';
+                       piece.bd_dir = 0;
                        minigame_server_sendflags(piece,MINIG_SF_UPDATE);
 
                        minigame_server_sendflags(minigame,MINIG_SF_UPDATE);
@@ -465,7 +492,7 @@ string bd_save_piece(entity minigame, entity e)
 
        bd_string = strcat(bd_string, "\"", e.netname, "\" ");
        bd_string = strcat(bd_string, ftos(e.bd_tiletype), " ");
-       bd_string = strcat(bd_string, sprintf("\"%.9v\"", e.bd_dir));
+       bd_string = strcat(bd_string, ftos(e.bd_dir));
 
        return bd_string;
 }
@@ -478,6 +505,16 @@ void bd_set_nextlevel(entity minigame, string s)
        minigame.bd_nextlevel = strzone(argv(2));
 }
 
+int bd_fix_dir(vector dir)
+{
+       if(dir.x == 0 && dir.y == 1) { return BD_DIR_UP; } // up
+       if(dir.x == 0 && dir.y == -1) { return BD_DIR_DN; } // down
+       if(dir.x == -1 && dir.y == 0) { return BD_DIR_LF; } // left
+       if(dir.x == 1 && dir.y == 0) { return BD_DIR_RT; } // right
+
+       return BD_DIR_DN; // down if all else fails
+}
+
 entity bd_load_piece(entity minigame, string s)
 {
        // separate pieces between the ; symbols
@@ -487,12 +524,12 @@ entity bd_load_piece(entity minigame, string s)
 
        entity e = msle_spawn(minigame,"minigame_board_piece");
        e.team = 1;
-       e.bd_dir = '0 -1 0';
+       e.bd_dir = 0;
 
        int argv_num = 0;
        e.netname = strzone(argv(argv_num)); ++argv_num;
        e.bd_tiletype = stof(argv(argv_num)); ++argv_num;
-       e.bd_dir = stov(argv(argv_num)); ++argv_num;
+       e.bd_dir = stoi(argv(argv_num)); ++argv_num;
 
        minigame_server_sendflags(e,MINIG_SF_ALL);
 
@@ -687,12 +724,7 @@ int bd_server_event(entity minigame, string event, ...)
 
                                WriteByte(MSG_ENTITY,sent.bd_tiletype);
 
-                               int dx = sent.bd_dir_x;
-                               int dy = sent.bd_dir_y;
-                               if(dx == -1) dx = 2;
-                               if(dy == -1) dy = 2;
-                               WriteByte(MSG_ENTITY,dx);
-                               WriteByte(MSG_ENTITY,dy);
+                               WriteByte(MSG_ENTITY,sent.bd_dir);
                        }
                        else if(sent.classname == "minigame_player" && (sf & BD_SF_PLAYERMOVES))
                                WriteShort(MSG_ENTITY,sent.bd_moves);
@@ -793,12 +825,17 @@ void bd_hud_board(vector pos, vector mySize)
                        tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
                        tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
 
-                       vector thedir = e.bd_dir;
+                       int bdir = e.bd_dir;
                        float theang = 0;
 
-                       if(thedir_y == -1) { theang = M_PI; }
-                       if(thedir_x == 1) { theang = M_PI/2; }
-                       if(thedir_x == -1) { theang = M_PI*3/2; }
+                       switch(bdir)
+                       {
+                               case BD_DIR_UP: theang = 0; break;
+                               default:
+                               case BD_DIR_DN: theang = M_PI; break;
+                               case BD_DIR_LF: theang = M_PI * 3 / 2; break;
+                               case BD_DIR_RT: theang = M_PI / 2; break; 
+                       }
 
                        drawrotpic(tile_pos, theang, minigame_texture("bd/dozer"),
                                                tile_size, tile_size/2, '1 1 1',
@@ -986,14 +1023,15 @@ bool bd_change_dozer_angle(entity minigame)
        if(!dozer || dozer.bd_tiletype != BD_TILE_DOZER)
                return false;
 
-       string thedir = "";
-       vector dir = dozer.bd_dir;
-       if(dir.x == 0 && dir.y == 0) { thedir = "r"; }
-
-       if(dir.x == 0 && dir.y == 1) { thedir = "r"; }
-       if(dir.x == 0 && dir.y ==-1) { thedir = "l"; }
-       if(dir.x ==-1 && dir.y == 0) { thedir = "u"; }
-       if(dir.x == 1 && dir.y == 0) { thedir = "d"; }
+       switch(dozer.bd_dir)
+       {
+               case BD_DIR_UP: dozer.bd_dir = BD_DIR_LF; break; // up -> left
+               default:
+               case BD_DIR_DN: dozer.bd_dir = BD_DIR_RT; break; // down -> right
+               case BD_DIR_LF: dozer.bd_dir = BD_DIR_DN; break; // left -> down
+               case BD_DIR_RT: dozer.bd_dir = BD_DIR_UP; break; // right -> up
+       }
+       string thedir = bd_get_dir_name(dozer.bd_dir);
 
        bd_editor_make_move(minigame, thedir);
        return true;
@@ -1129,15 +1167,7 @@ int bd_client_event(entity minigame, string event, ...)
 
                                        sent.bd_tiletype = ReadByte();
 
-                                       int dx = ReadByte();
-                                       int dy = ReadByte();
-
-                                       if(dx == 2) dx = -1;
-                                       if(dy == 2) dy = -1;
-
-                                       sent.bd_dir_x = dx;
-                                       sent.bd_dir_y = dy;
-                                       sent.bd_dir_z = 0;
+                                       sent.bd_dir = ReadByte();
                                }
                        }
                        else if(sent.classname == "minigame_player" && (sf & BD_SF_PLAYERMOVES))
index e05658cbf2c0b486f9ccdbeb01e2a53517c2b91b..4ae9fb06b21245ff233831d8a3ff7a280e477439 100644 (file)
@@ -271,8 +271,7 @@ int pp_server_event(entity minigame, string event, ...)
 
 string pp_curr_pos; // identifier of the tile under the mouse
 vector pp_boardpos; // HUD board position
-vector pp_boardsize;// HUD board size
-.int pp_checkwin; // Used to optimize checks to display a win
+vector pp_boardsize; // HUD board size
 
 // Required function, draw the game board
 void pp_hud_board(vector pos, vector mySize)
index c15ecd463b94f4e8da29e7e745fd5bc87fef3de7..7f0fdb2ff750aa61eb1ffd2b5d72c903cfd0d97a 100644 (file)
@@ -95,7 +95,7 @@ void snake_new_mouse(entity minigame)
        {
                string pos = minigame_tile_buildname(i, j);
                if(!snake_find_piece(minigame, pos))
-                       RandomSelection_Add(NULL, 0, pos, 1, 1);
+                       RandomSelection_AddString(pos, 1, 1);
        }
 
        entity piece = msle_spawn(minigame,"minigame_board_piece");
@@ -175,7 +175,7 @@ void minigame_setup_snake(entity minigame, int pteam)
        {
                string pos = minigame_tile_buildname(i, j);
                if(!snake_find_piece(minigame, pos))
-                       RandomSelection_Add(NULL, 0, pos, 1, 1);
+                       RandomSelection_AddString(pos, 1, 1);
        }
 
        entity piece = msle_spawn(minigame,"minigame_board_piece");
index e06bb46628c5366db60f07a129feaf0cc18358f7..c5a658054fe0d1e55192363b7e12cfd0abe9112b 100644 (file)
@@ -418,7 +418,7 @@ int ttt_ai_random(int piecemask)
        for ( int i = 0; i < 9; i++ )
        {
                if ( piecemask & f )
-                       RandomSelection_Add(NULL, f, string_null, 1, 1);
+                       RandomSelection_AddFloat(f, 1, 1);
                f <<= 1;
        }
 
index be50e5503f70f2d660263fd15f68c98aa991bd40..e7f1e9734d4269ce360bb65ebe2271b5c4a0ae08 100644 (file)
@@ -5,6 +5,7 @@
 #endif
 #ifdef SVQC
     #include <common/monsters/sv_spawn.qc>
+       #include <common/monsters/spawner.qc>
 #endif
 
 #include <common/monsters/monster/_mod.inc>
index babf6e4faf19a2f1e1879afd774693a05514c762..2685e2fbced75be78c0402980f5a5acea84f9294 100644 (file)
@@ -1,16 +1,17 @@
 #pragma once
 
 // special spawn flags
-const int MONSTER_RESPAWN_DEATHPOINT = 16; // re-spawn where we died
-const int MONSTER_TYPE_FLY = 32;
-const int MONSTER_TYPE_SWIM = 64;
-const int MONSTER_SIZE_BROKEN = 128; // TODO: remove when bad models are replaced
-const int MON_FLAG_SUPERMONSTER = 256; // incredibly powerful monster
-const int MON_FLAG_RANGED = 512; // monster shoots projectiles
-const int MON_FLAG_MELEE = 1024;
-const int MON_FLAG_CRUSH = 2048; // monster can be stomped in special modes
-const int MON_FLAG_RIDE = 4096; // monster can be ridden in special modes
-const int MONSTER_SIZE_QUAKE = 8192;
+const int MONSTER_RESPAWN_DEATHPOINT = BIT(4); // re-spawn where we died
+const int MONSTER_TYPE_FLY = BIT(5);
+const int MONSTER_TYPE_SWIM = BIT(6);
+const int MONSTER_SIZE_BROKEN = BIT(7); // TODO: remove when bad models are replaced
+const int MON_FLAG_SUPERMONSTER = BIT(8); // incredibly powerful monster
+const int MON_FLAG_RANGED = BIT(9); // monster shoots projectiles
+const int MON_FLAG_MELEE = BIT(10);
+const int MON_FLAG_CRUSH = BIT(11); // monster can be stomped in special modes
+const int MON_FLAG_RIDE = BIT(12); // monster can be ridden in special modes
+const int MONSTER_SIZE_QUAKE = BIT(13);
+const int MONSTER_TYPE_PASSIVE = BIT(14); // doesn't target or chase enemies
 
 // entity properties of monsterinfo:
 .bool(int, entity actor, entity targ) monster_attackfunc;
@@ -21,9 +22,6 @@ const int MONSTER_SIZE_QUAKE = 8192;
 .vector anim_melee1;
 .vector anim_melee2;
 .vector anim_melee3;
-.vector anim_pain3;
-.vector anim_pain4;
-.vector anim_pain5;
 .vector anim_walk;
 .vector anim_spawn;
 
index 30d09807f2f9faf9c4462c30b07c36bb117983e9..71bca32c64033b0fed60e56bbae2055c7c44dee6 100644 (file)
@@ -162,7 +162,7 @@ void M_Mage_Attack_Spike_Think(entity this)
                // Do evasive maneuvers for world objects? ( this should be a cpu hog. :P )
                if ((autocvar_g_monster_mage_attack_spike_smart) && vdist(eorg - this.origin, >, autocvar_g_monster_mage_attack_spike_smart_mindist))
                {
-                       // Is it a better idea (shorter distance) to trace to the target itthis?
+                       // Is it a better idea (shorter distance) to trace to the target itself?
                        if ( vlen2(this.origin + olddir * this.wait) < vlen2(eorg - this.origin))
                                traceline(this.origin, this.origin + olddir * this.wait, false, this);
                        else
@@ -371,7 +371,7 @@ bool M_Mage_Attack(int attack_type, entity actor, entity targ)
        return false;
 }
 
-spawnfunc(monster_mage) { Monster_Spawn(this, MON_MAGE.monsterid); }
+spawnfunc(monster_mage) { Monster_Spawn(this, true, MON_MAGE.monsterid); }
 
 #endif // SVQC
 
index 8f84bdce31d70778f2989c696a14198f7aa29ac5..bbaf2e4696cf85949282cad609ee7e0f24a47b95 100644 (file)
@@ -200,7 +200,7 @@ bool M_Shambler_Attack(int attack_type, entity actor, entity targ)
        return false;
 }
 
-spawnfunc(monster_shambler) { Monster_Spawn(this, MON_SHAMBLER.monsterid); }
+spawnfunc(monster_shambler) { Monster_Spawn(this, true, MON_SHAMBLER.monsterid); }
 #endif // SVQC
 
 #ifdef SVQC
index d2cb8313e3f022402353736f94ac839da415114b..51122dfcf57d73a5575aff79dab4e8f25b31fdef 100644 (file)
@@ -190,7 +190,7 @@ bool M_Spider_Attack(int attack_type, entity actor, entity targ)
        return false;
 }
 
-spawnfunc(monster_spider) { Monster_Spawn(this, MON_SPIDER.monsterid); }
+spawnfunc(monster_spider) { Monster_Spawn(this, true, MON_SPIDER.monsterid); }
 #endif // SVQC
 
 #ifdef SVQC
index 3fd7ec967679e05b750349427f0b2b68d6bf1a32..cd53ff26f75aa2d483de2e55730fd56cce824962 100644 (file)
@@ -106,7 +106,7 @@ bool M_Wyvern_Attack(int attack_type, entity actor, entity targ)
        return false;
 }
 
-spawnfunc(monster_wyvern) { Monster_Spawn(this, MON_WYVERN.monsterid); }
+spawnfunc(monster_wyvern) { Monster_Spawn(this, true, MON_WYVERN.monsterid); }
 #endif // SVQC
 
 #ifdef SVQC
index c48c2108fa2299b80eee1aebdccf5a7da5f4d21b..8bbb300c76b6fc12cfae5ee55309c242d75a8115 100644 (file)
@@ -125,7 +125,7 @@ bool M_Zombie_Attack(int attack_type, entity actor, entity targ)
        return false;
 }
 
-spawnfunc(monster_zombie) { Monster_Spawn(this, MON_ZOMBIE.monsterid); }
+spawnfunc(monster_zombie) { Monster_Spawn(this, true, MON_ZOMBIE.monsterid); }
 #endif // SVQC
 
 #ifdef SVQC
@@ -188,6 +188,8 @@ METHOD(Zombie, mr_setup, bool(Zombie this, entity actor))
     if(actor.spawnflags & MONSTERFLAG_NORESPAWN)
         actor.spawnflags &= ~MONSTERFLAG_NORESPAWN; // zombies always respawn
 
+    actor.spawnflags &= ~MONSTERFLAG_APPEAR; // once it's appeared, it will respawn quickly, we don't want it to appear
+
     actor.spawnflags |= MONSTER_RESPAWN_DEATHPOINT;
 
     actor.monster_loot = spawnfunc_item_health_medium;
diff --git a/qcsrc/common/monsters/spawner.qc b/qcsrc/common/monsters/spawner.qc
new file mode 100644 (file)
index 0000000..0b34d13
--- /dev/null
@@ -0,0 +1,26 @@
+#include "sv_spawn.qh"
+
+void spawner_use(entity this, entity actor, entity trigger)
+{
+       int moncount = 0;
+       IL_EACH(g_monsters, it.realowner == this,
+       {
+               ++moncount;
+       });
+
+       if(moncount >= this.count)
+               return;
+
+       entity e = spawn();
+       e.noalign = this.noalign;
+       e.angles = this.angles;
+       e.monster_skill = this.monster_skill;
+       e = spawnmonster(e, this.spawnmob, 0, this, this, this.origin, false, true, this.monster_moveflags);
+}
+
+spawnfunc(monster_spawner)
+{
+       if(!autocvar_g_monsters || !this.spawnmob || this.spawnmob == "") { delete(this); return; }
+
+       this.use = spawner_use;
+}
index 9ac1f4e14084f0adaa1ec8f40f2047ac14dd2ef9..f680f118b3dd5acbe8a14093c03556173cf3cc21 100644 (file)
@@ -505,7 +505,7 @@ bool Monster_Respawn_Check(entity this)
        return true;
 }
 
-void Monster_Respawn(entity this) { Monster_Spawn(this, this.monsterid); }
+void Monster_Respawn(entity this) { Monster_Spawn(this, true, this.monsterid); }
 
 .vector        pos1, pos2;
 
@@ -692,7 +692,8 @@ void Monster_CalculateVelocity(entity this, vector to, vector from, float turnra
 
 void Monster_Move(entity this, float runspeed, float walkspeed, float stpspeed)
 {
-       if(this.target2) { this.goalentity = find(NULL, targetname, this.target2); }
+       // update goal entity if lost
+       if(this.target2 && this.goalentity.targetname != this.target2) { this.goalentity = find(NULL, targetname, this.target2); }
 
        entity targ;
 
@@ -868,10 +869,10 @@ void Monster_Move(entity this, float runspeed, float walkspeed, float stpspeed)
        }
        else
        {
-               entity e = find(NULL, targetname, this.target2);
+               entity e = this.goalentity; //find(NULL, targetname, this.target2);
                if(e.target2)
                        this.target2 = e.target2;
-               else if(e.target)
+               else if(e.target) // compatibility
                        this.target2 = e.target;
 
                movelib_brake_simple(this, stpspeed);
@@ -933,8 +934,7 @@ void Monster_Dead_Think(entity this)
 void Monster_Appear(entity this, entity actor, entity trigger)
 {
        this.enemy = actor;
-       this.spawnflags &= ~MONSTERFLAG_APPEAR; // otherwise, we get an endless loop
-       Monster_Spawn(this, this.monsterid);
+       Monster_Spawn(this, false, this.monsterid);
 }
 
 bool Monster_Appear_Check(entity this, int monster_id)
@@ -1128,23 +1128,19 @@ void Monster_Move_2D(entity this, float mspeed, bool allow_jumpoff)
                return;
        }
 
-       float reverse = false;
-       vector a, b;
-
        makevectors(this.angles);
-       a = this.origin + '0 0 16';
-       b = this.origin + '0 0 16' + v_forward * 32;
+       vector a = CENTER_OR_VIEWOFS(this);
+       vector b = CENTER_OR_VIEWOFS(this) + v_forward * 32;
 
        traceline(a, b, MOVE_NORMAL, this);
 
+       bool reverse = false;
        if(trace_fraction != 1.0)
-       {
                reverse = true;
-
-               if(trace_ent)
-               if(IS_PLAYER(trace_ent) && !(trace_ent.items & IT_STRENGTH))
-                       reverse = false;
-       }
+       if(trace_ent && IS_PLAYER(trace_ent) && !(trace_ent.items & ITEM_Strength.m_itemid))
+               reverse = false;
+       if(trace_ent && IS_MONSTER(trace_ent))
+               reverse = true;
 
        // TODO: fix this... tracing is broken if the floor is thin
        /*
@@ -1212,7 +1208,7 @@ void Monster_Anim(entity this)
 void Monster_Think(entity this)
 {
        setthink(this, Monster_Think);
-       this.nextthink = this.ticrate;
+       this.nextthink = time + this.ticrate;
 
        if(this.monster_lifetime)
        if(time >= this.monster_lifetime)
@@ -1291,7 +1287,7 @@ bool Monster_Spawn_Setup(entity this)
        return true;
 }
 
-bool Monster_Spawn(entity this, int mon_id)
+bool Monster_Spawn(entity this, bool check_appear, int mon_id)
 {
        // setup the basic required properties for a monster
        entity mon = Monsters_from(mon_id);
@@ -1302,7 +1298,7 @@ bool Monster_Spawn(entity this, int mon_id)
        if(!(this.spawnflags & MONSTERFLAG_RESPAWNED))
                IL_PUSH(g_monsters, this);
 
-       if(Monster_Appear_Check(this, mon_id)) { return true; } // return true so the monster isn't removed
+       if(check_appear && Monster_Appear_Check(this, mon_id)) { return true; } // return true so the monster isn't removed
 
        if(!this.monster_skill)
                this.monster_skill = cvar("g_monsters_skill");
@@ -1323,8 +1319,9 @@ bool Monster_Spawn(entity this, int mon_id)
        this.flags                              = FL_MONSTER;
        this.classname                  = "monster";
        this.takedamage                 = DAMAGE_AIM;
+       if(!this.bot_attack)
+               IL_PUSH(g_bot_targets, this);
        this.bot_attack                 = true;
-       IL_PUSH(g_bot_targets, this);
        this.iscreature                 = true;
        this.teleportable               = true;
        this.damagedbycontents  = true;
@@ -1349,13 +1346,13 @@ bool Monster_Spawn(entity this, int mon_id)
        this.oldtarget2                 = this.target2;
        this.pass_distance              = 0;
        this.deadflag                   = DEAD_NO;
-       this.noalign                    = ((mon.spawnflags & MONSTER_TYPE_FLY) || (mon.spawnflags & MONSTER_TYPE_SWIM));
        this.spawn_time                 = time;
        this.gravity                    = 1;
        this.monster_moveto             = '0 0 0';
        this.monster_face               = '0 0 0';
        this.dphitcontentsmask  = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_BOTCLIP | DPCONTENTS_MONSTERCLIP;
 
+       if(!this.noalign) { this.noalign = ((mon.spawnflags & MONSTER_TYPE_FLY) || (mon.spawnflags & MONSTER_TYPE_SWIM)); }
        if(!this.scale) { this.scale = 1; }
        if(autocvar_g_monsters_edit) { this.grab = 1; }
        if(autocvar_g_fullbrightplayers) { this.effects |= EF_FULLBRIGHT; }
index 56509cf66130287530503eed396bd3a32fc2d35b..b667373a0f7926496b4633dc16dbc29e69d2b167 100644 (file)
@@ -72,7 +72,7 @@ void Monster_Remove(entity this);
 
 void monsters_setstatus(entity this);
 
-bool Monster_Spawn(entity this, int mon_id);
+bool Monster_Spawn(entity this, bool check_appear, int mon_id);
 
 void monster_setupcolors(entity this);
 
index 50373cc2a232b85e1a93e403482776e6a81e2ae2..6d9daa2964cbb4c6c5c1d4c25561e22fcf2c2731 100644 (file)
@@ -8,42 +8,48 @@
     #include <server/autocvars.qh>
     #include <server/defs.qh>
 #endif
-entity spawnmonster (string monster, float monster_id, entity spawnedby, entity own, vector orig, float respwn, float invincible, float moveflag)
+entity spawnmonster (entity e, string monster, int monster_id, entity spawnedby, entity own, vector orig, bool respwn, bool removeifinvalid, int moveflag)
 {
-       float i;
-       entity e = spawn();
-
        e.spawnflags = MONSTERFLAG_SPAWNED;
 
        if(!respwn) { e.spawnflags |= MONSTERFLAG_NORESPAWN; }
-       if(invincible) { e.spawnflags |= MONSTERFLAG_INVINCIBLE; }
+       //if(invincible) { e.spawnflags |= MONSTERFLAG_INVINCIBLE; }
 
        setorigin(e, orig);
 
        if(monster == "random")
        {
-               RandomSelection_Init();
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
-                       RandomSelection_Add(NULL, i, string_null, 1, 1);
+               RandomSelection_Init(); 
+               FOREACH(Monsters, it != MON_Null && !(it.spawnflags & MONSTER_TYPE_PASSIVE),
+               {
+                       RandomSelection_AddEnt(it, 1, 1);
+               });
 
-           monster_id = RandomSelection_chosen_float;
+               monster_id = RandomSelection_chosen_ent.monsterid;
        }
        else if(monster != "")
        {
-               float found = 0;
-               entity mon;
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
+               bool found = false;
+               FOREACH(Monsters, it != MON_Null,
                {
-                       mon = get_monsterinfo(i);
-                       if(mon.netname == monster)
+                       if(it.netname == monster)
                        {
                                found = true;
-                               monster_id = mon.monsterid; // we have the monster, old monster id is no longer required
+                               monster_id = it.monsterid; // we have the monster, old monster id is no longer required
                                break;
                        }
+               });
+
+               if(!found && !monster_id)
+               {
+                       if(removeifinvalid)
+                       {
+                               delete(e);
+                               return NULL; // no good
+                       }
+                       else
+                               monster_id = MON_FIRST;
                }
-               if(!found)
-                       monster_id = ((monster_id > 0) ? monster_id : MON_FIRST);
        }
 
        e.realowner = spawnedby;
@@ -63,7 +69,7 @@ entity spawnmonster (string monster, float monster_id, entity spawnedby, entity
        }
 
        // Monster_Spawn checks if monster is valid
-       Monster_Spawn(e, monster_id);
+       Monster_Spawn(e, false, monster_id);
 
        return e;
 }
index 0aba5c19d4326f2220c89c576468d022263be4f3..983676db87d3c4a225dd141db6017ebe173624d4 100644 (file)
@@ -1,3 +1,3 @@
 #pragma once
 
-entity spawnmonster (string monster, float monster_id, entity spawnedby, entity own, vector orig, float respwn, float invincible, float moveflag);
+entity spawnmonster (entity e, string monster, int monster_id, entity spawnedby, entity own, vector orig, bool respwn, bool removeifinvalid, int moveflag);
index 82fa2d33cb8bd0e0a649619e7836f95eefdfd9d6..5587da593796e32e6e6afee3d91d84ec4ac14a18 100644 (file)
@@ -216,7 +216,7 @@ void buff_NewType(entity ent, float cb)
        FOREACH(Buffs, buff_Available(it), LAMBDA(
                it.buff_seencount += 1;
                // if it's already been chosen, give it a lower priority
-               RandomSelection_Add(NULL, it.m_itemid, string_null, 1, max(0.2, 1 / it.buff_seencount));
+               RandomSelection_AddFloat(it.m_itemid, 1, max(0.2, 1 / it.buff_seencount));
        ));
        ent.buffs = RandomSelection_chosen_float;
 }
index 0cf3ed978134babe2cc6135d237e3b3b197e934f..6135e72b556a1aa3d7934fdbc4d631b161981df4 100644 (file)
@@ -1,6 +1,10 @@
 #include "sv_instagib.qh"
 
 int autocvar_g_instagib_ammo_drop;
+bool autocvar_g_instagib_ammo_convert_cells;
+bool autocvar_g_instagib_ammo_convert_rockets;
+bool autocvar_g_instagib_ammo_convert_shells;
+bool autocvar_g_instagib_ammo_convert_bullets;
 int autocvar_g_instagib_extralives;
 float autocvar_g_instagib_speed_highspeed;
 
@@ -356,12 +360,53 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, SetStartItems)
        start_items |= IT_UNLIMITED_SUPERWEAPONS;
 }
 
+void replace_with_insta_cells(entity item)
+{
+       entity e = spawn();
+       setorigin(e, item.origin);
+       e.noalign = item.noalign;
+       e.cnt = item.cnt;
+       e.team = item.team;
+       e.spawnfunc_checked = true;
+       spawnfunc_item_minst_cells(e);
+}
+
 MUTATOR_HOOKFUNCTION(mutator_instagib, FilterItem)
 {
        entity item = M_ARGV(0, entity);
 
        if(item.classname == "item_cells")
-               return true; // no normal cells?
+       {
+               if(autocvar_g_instagib_ammo_convert_cells)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_rockets")
+       {
+               if(autocvar_g_instagib_ammo_convert_rockets)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_shells")
+       {
+               if(autocvar_g_instagib_ammo_convert_shells)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
+       else if(item.classname == "item_bullets")
+       {
+               if(autocvar_g_instagib_ammo_convert_bullets)
+               {
+                       replace_with_insta_cells(item);
+               }
+               return true;
+       }
 
        if(item.weapon == WEP_VAPORIZER.m_id && item.classname == "droppedweapon")
        {
@@ -371,13 +416,7 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, FilterItem)
 
        if(item.weapon == WEP_DEVASTATOR.m_id || item.weapon == WEP_VORTEX.m_id)
        {
-               entity e = spawn();
-               setorigin(e, item.origin);
-               e.noalign = item.noalign;
-        e.cnt = item.cnt;
-        e.team = item.team;
-        e.spawnfunc_checked = true;
-               spawnfunc_item_minst_cells(e);
+               replace_with_insta_cells(item);
                return true;
        }
 
index e07034bafa33c7d775d3a3e0cb134beb9edb1241..a8347499841b77d034adb39efac4853400343f29 100644 (file)
@@ -1,8 +1,8 @@
 #include "sv_melee_only.qh"
 
-REGISTER_MUTATOR(melee_only, cvar("g_melee_only") && !cvar("g_instagib") && !g_nexball);
+REGISTER_MUTATOR(melee_only, cvar("g_melee_only") && !cvar("g_instagib") && !cvar("g_overkill") && !g_nexball);
 
-MUTATOR_HOOKFUNCTION(melee_only, SetStartItems)
+MUTATOR_HOOKFUNCTION(melee_only, SetStartItems, CBC_ORDER_LAST)
 {
        start_ammo_shells = warmup_start_ammo_shells = 0;
        start_weapons = warmup_start_weapons = WEPSET(SHOTGUN);
index c4e73d286d13946e64024fc976ae1d5987e3347a..d2094049438414112aab676a98ee430ffbd22cd8 100644 (file)
@@ -211,7 +211,7 @@ void napalm_damage(entity this, float dist, float damage, float edgedamage, floa
                        if(d < dist)
                        {
                                e.fireball_impactvec = p;
-                               RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e));
+                               RandomSelection_AddEnt(e, 1 / (1 + d), !Fire_IsBurning(e));
                        }
                }
        if(RandomSelection_chosen_ent)
@@ -654,7 +654,7 @@ void nade_heal_boom(entity this)
 
 void nade_monster_boom(entity this)
 {
-       entity e = spawnmonster(this.pokenade_type, 0, this.realowner, this.realowner, this.origin, false, false, 1);
+       entity e = spawnmonster(spawn(), this.pokenade_type, 0, this.realowner, this.realowner, this.origin, false, false, 1);
 
        if(autocvar_g_nades_pokenade_monster_lifetime > 0)
                e.monster_lifetime = time + autocvar_g_nades_pokenade_monster_lifetime;
@@ -911,7 +911,7 @@ void toss_nade(entity e, bool set_owner, vector _velocity, float _time)
                setsize(_nade, '-16 -16 -16', '16 16 16');
        set_movetype(_nade, MOVETYPE_BOUNCE);
 
-       tracebox(_nade.origin, _nade.mins, _nade.maxs, _nade.origin, false, _nade);
+       tracebox(_nade.origin, _nade.mins, _nade.maxs, _nade.origin, MOVE_NOMONSTERS, _nade);
        if (trace_startsolid)
                setorigin(_nade, e.origin);
 
index 97ed4361ba12c8e4da5d8701fbf7f7e3208faad7..39072cefc7d2ba0ab9697a9f3a104599b2a40dc9 100644 (file)
@@ -96,7 +96,7 @@ void NIX_ChooseNextWeapon()
        RandomSelection_Init();
        FOREACH(Weapons, it != WEP_Null, LAMBDA(
                if(NIX_CanChooseWeapon(it.m_id))
-                       RandomSelection_Add(NULL, it.m_id, string_null, 1, (it.m_id != nix_weapon));
+                       RandomSelection_AddFloat(it.m_id, 1, (it.m_id != nix_weapon));
        ));
        nix_nextweapon = RandomSelection_chosen_float;
 }
index ea7ed953ce45aa86ed3193740c8c3cf0edb968a0..d47da6c3c38ed43c3949eed8042f94941d8beef9 100644 (file)
@@ -4,15 +4,15 @@
 #include "rpc.qh"
 
 bool autocvar_g_overkill_powerups_replace;
-float autocvar_g_overkill_superguns_respawn_time;
-bool autocvar_g_overkill_100h_anyway;
-bool autocvar_g_overkill_100a_anyway;
 bool autocvar_g_overkill_ammo_charge;
 float autocvar_g_overkill_ammo_charge_notice;
 float autocvar_g_overkill_ammo_charge_limit;
 
-.vector ok_deathloc;
-.float ok_spawnsys_timer;
+bool autocvar_g_overkill_filter_healthmega;
+bool autocvar_g_overkill_filter_armormedium;
+bool autocvar_g_overkill_filter_armorbig;
+bool autocvar_g_overkill_filter_armorlarge;
+
 .float ok_lastwep;
 .float ok_item;
 
@@ -21,8 +21,6 @@ float autocvar_g_overkill_ammo_charge_limit;
 .float ok_use_ammocharge = _STAT(OK_AMMO_CHARGE);
 .float ok_ammo_charge = _STAT(OK_AMMO_CHARGEPOOL);
 
-.float ok_pauseregen_finished;
-
 void(entity ent, float wep) ok_DecreaseCharge;
 
 void ok_Initialize();
@@ -109,22 +107,13 @@ MUTATOR_HOOKFUNCTION(ok, PlayerDamage_Calculate, CBC_ORDER_LAST)
                if(!IS_DEAD(frag_target))
                {
                        Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_SECONDARY_NODAMAGE);
-                       M_ARGV(6, vector) = '0 0 0';
+                       M_ARGV(6, vector) = '0 0 0'; // force
                }
 
-               M_ARGV(4, float) = 0;
+               M_ARGV(4, float) = 0; // damage
        }
 }
 
-MUTATOR_HOOKFUNCTION(ok, PlayerDamage_SplitHealthArmor)
-{
-       entity frag_target = M_ARGV(2, entity);
-       float damage_take = M_ARGV(4, float);
-
-       if(damage_take)
-               frag_target.ok_pauseregen_finished = max(frag_target.ok_pauseregen_finished, time + 2);
-}
-
 void ok_DropItem(entity this, entity targ)
 {
        entity e = new(droppedweapon); // hax
@@ -168,30 +157,6 @@ MUTATOR_HOOKFUNCTION(ok, MonsterDropItem)
        ok_DropItem(mon, frag_attacker);
 }
 
-MUTATOR_HOOKFUNCTION(ok, PlayerRegen)
-{
-       entity player = M_ARGV(0, entity);
-
-       // overkill's values are different, so use custom regen
-       if(!STAT(FROZEN, player))
-       {
-               player.armorvalue = CalcRotRegen(player.armorvalue, autocvar_g_balance_armor_regenstable, autocvar_g_balance_armor_regen, autocvar_g_balance_armor_regenlinear,
-                       1 * frametime * (time > player.ok_pauseregen_finished), 0, 0, 1, 1 * frametime * (time > player.pauserotarmor_finished), autocvar_g_balance_armor_limit);
-               player.health = CalcRotRegen(player.health, autocvar_g_balance_health_regenstable, 0, 100, 1 * frametime * (time > player.ok_pauseregen_finished), 200, 0,
-                       autocvar_g_balance_health_rotlinear, 1 * frametime * (time > player.pauserothealth_finished), autocvar_g_balance_health_limit);
-
-               float minf, maxf, limitf;
-
-               maxf = autocvar_g_balance_fuel_rotstable;
-               minf = autocvar_g_balance_fuel_regenstable;
-               limitf = autocvar_g_balance_fuel_limit;
-
-               player.ammo_fuel = CalcRotRegen(player.ammo_fuel, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear,
-                       frametime * (time > player.pauseregen_finished) * ((player.items & ITEM_JetpackRegen.m_itemid) != 0), maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > player.pauserotfuel_finished), limitf);
-       }
-       return true; // return true anyway, as frozen uses no regen
-}
-
 MUTATOR_HOOKFUNCTION(ok, ForbidThrowCurrentWeapon)
 {
        return true;
@@ -221,7 +186,8 @@ MUTATOR_HOOKFUNCTION(ok, PlayerPreThink)
        ok_IncreaseCharge(player, PS(player).m_weapon.m_id);
 
        if(PHYS_INPUT_BUTTON_ATCK2(player))
-       if(!forbidWeaponUse(player) || player.weapon_blocked) // allow if weapon is blocked
+       if( !forbidWeaponUse(player) || player.weapon_blocked // allow if weapon is blocked
+               || (round_handler_IsActive() && !round_handler_IsRoundStarted()) )
        if(time >= player.jump_interval)
        {
                player.jump_interval = time + WEP_CVAR_PRI(blaster, refire) * W_WeaponRateFactor(player);
@@ -287,8 +253,6 @@ MUTATOR_HOOKFUNCTION(ok, PlayerSpawn)
        // if player changed their weapon while dead, don't switch to their death weapon
        if(player.impulse)
                player.ok_lastwep = 0;
-
-       player.ok_pauseregen_finished = time + 2;
 }
 
 void self_spawnfunc_weapon_hmg(entity this) { spawnfunc_weapon_hmg(this); }
@@ -310,7 +274,7 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn)
                        wep.noalign = ent.noalign;
                        wep.cnt = ent.cnt;
                        wep.team = ent.team;
-                       wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
+                       wep.respawntime = g_pickup_respawntime_superweapon;
                        wep.pickup_anyway = true;
                        wep.spawnfunc_checked = true;
                        setthink(wep, self_spawnfunc_weapon_hmg);
@@ -327,7 +291,7 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn)
                        wep.noalign = ent.noalign;
                        wep.cnt = ent.cnt;
                        wep.team = ent.team;
-                       wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
+                       wep.respawntime = g_pickup_respawntime_superweapon;
                        wep.pickup_anyway = true;
                        wep.spawnfunc_checked = true;
                        setthink(wep, self_spawnfunc_weapon_rpc);
@@ -342,12 +306,16 @@ MUTATOR_HOOKFUNCTION(ok, FilterItem)
        entity item = M_ARGV(0, entity);
 
        if(item.ok_item)
-               return;
+               return false;
 
-       switch(item.items)
+       switch(item.itemdef)
        {
-               case ITEM_HealthMega.m_itemid: return !(autocvar_g_overkill_100h_anyway);
-               case ITEM_ArmorMega.m_itemid: return !(autocvar_g_overkill_100a_anyway);
+               case ITEM_HealthMega: return autocvar_g_overkill_filter_healthmega;
+               case ITEM_ArmorMedium: return autocvar_g_overkill_filter_armormedium;
+               // WARNING: next two statements look wrong because of inconsistency between cvar names and code
+               // armor cvars need renaming to be consistent with their health counterparts
+               case ITEM_ArmorLarge: return autocvar_g_overkill_filter_armorbig;
+               case ITEM_ArmorMega: return autocvar_g_overkill_filter_armorlarge;
        }
 
        return true;
@@ -362,7 +330,7 @@ MUTATOR_HOOKFUNCTION(ok, SpectateCopy)
        client.ok_use_ammocharge = spectatee.ok_use_ammocharge;
 }
 
-MUTATOR_HOOKFUNCTION(ok, SetStartItems)
+MUTATOR_HOOKFUNCTION(ok, SetStartItems, CBC_ORDER_LAST)
 {
        WepSet ok_start_items = (WEPSET(MACHINEGUN) | WEPSET(VORTEX) | WEPSET(SHOTGUN));
 
index fb14f27db8063cb22d96b1dd9baad197b2f545d2..123b8caa03fbd9876d16af1c140b0a59479504fe 100644 (file)
@@ -38,7 +38,7 @@ MUTATOR_HOOKFUNCTION(spawn_near_teammate, Spawn_Score)
                        continue;
                if(!checkpvs(spawn_spot.origin, it))
                        continue;
-               RandomSelection_Add(it, 0, string_null, 1, 1);
+               RandomSelection_AddEnt(it, 1, 1);
        ));
 
        if(RandomSelection_chosen_ent)
index 7e5f79317f6dc046238f83bf5c8995da2b12b077..e7a33567b62227403780bb71320f25ea9f56bbc0 100644 (file)
@@ -611,11 +611,9 @@ void Draw_WaypointSprite(entity this)
     (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o.x,
     (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o.y);
 
-    float vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
-
     float crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) );
 
-    t = waypointsprite_scale * vidscale;
+    t = waypointsprite_scale;
     a *= waypointsprite_alpha;
 
     {
index 6a420b734eacd1dcdf74dd37846cfc4d025cc48f..62a7cac61123efc52393d6f814c48521612a4eee 100644 (file)
@@ -73,8 +73,8 @@ float waypointsprite_distancefadescale;
 float waypointsprite_distancefadedistance;
 float waypointsprite_alpha;
 
-const float SPRITE_HEALTHBAR_WIDTH = 144;
-const float SPRITE_HEALTHBAR_HEIGHT = 9;
+const float SPRITE_HEALTHBAR_WIDTH = 104;
+const float SPRITE_HEALTHBAR_HEIGHT = 7;
 const float SPRITE_HEALTHBAR_MARGIN = 6;
 const float SPRITE_HEALTHBAR_BORDER = 2;
 const float SPRITE_HEALTHBAR_BORDERALPHA = 1;
index b9f7b36a91302663bb27857caae3fb061d9c0452..a6431cf673810c1625552fc2418c644738c3e8ad 100644 (file)
 
     MSG_INFO_NOTIF(MONSTERS_DISABLED,                       1,  0, 0, "", "",           "",     _("^BGMonsters are currently disabled"), "")
 
+    MULTITEAM_INFO(NEXBALL_RETURN_HELD, 4,                  1,  0, 0, "", "",           "",     _("^BGThe ^TC^TT^BG team held the ball for too long"), "", NAME)
+
     MSG_INFO_NOTIF(ONSLAUGHT_CAPTURE,                       1,  2, 0, "s1 s2", "",      "",     _("^BG%s^BG captured %s^BG control point"), "")
     MULTITEAM_INFO(ONSLAUGHT_CPDESTROYED, 4,                1,  2, 0, "s1 s2", "",      "",     _("^TC^TT^BG team %s^BG control point has been destroyed by %s"), "", NAME)
     MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED, 4,               1,  0, 0, "", "",           "",     _("^TC^TT^BG generator has been destroyed"), "", GENERATOR)
     MSG_CENTER_NOTIF(CTF_STALEMATE_CARRIER,             1,      0, 0, "",               CPID_STALEMATE,         "0 0",  _("^BGStalemate! Enemies can now see you on radar!"), "")
     MSG_CENTER_NOTIF(CTF_STALEMATE_OTHER,               1,      0, 0, "",               CPID_STALEMATE,         "0 0",  _("^BGStalemate! Flag carriers can now be seen by enemies on radar!"), "")
 
-    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG,                 1,      1, 1, "spree_cen s1",               CPID_Null,  "0 0",  _("^K3%sYou fragged ^BG%s"), _("^K3%sYou scored against ^BG%s"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED,              1,      1, 1, "spree_cen s1",               CPID_Null,  "0 0",  _("^K1%sYou were fragged by ^BG%s"), _("^K1%sYou were scored against by ^BG%s"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_VERBOSE,      1,      1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  _("^K1%sYou were fragged by ^BG%s^BG%s"), _("^K1%sYou were scored against by ^BG%s^BG%s"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_VERBOSE,         1,      1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  _("^K3%sYou fragged ^BG%s^BG%s"), _("^K3%sYou scored against ^BG%s^BG%s"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAG,             1,      1, 1, "spree_cen s1",               CPID_Null,  "0 0",  _("^K1%sYou typefragged ^BG%s"), _("^K1%sYou scored against ^BG%s^K1 while they were typing"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAGGED,          1,      1, 1, "spree_cen s1",               CPID_Null,  "0 0",  _("^K1%sYou were typefragged by ^BG%s"), _("^K1%sYou were scored against by ^BG%s^K1 while typing!"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAGGED_VERBOSE,  1,      1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  _("^K1%sYou were typefragged by ^BG%s^BG%s"), _("^K1%sYou were scored against by ^BG%s^K1 while typing^BG%s"))
-    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAG_VERBOSE,     1,      1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  _("^K1%sYou typefragged ^BG%s^BG%s"), _("^K1%sYou scored against ^BG%s^K1 while they were typing^BG%s"))
-
-    MSG_CENTER_NOTIF(NADE_THROW,                        1,      0, 0, "",               CPID_NADES,             "0 0",  _("^BGPress ^F2DROPWEAPON^BG again to toss the nade!"), "")
+    #define VERBOSE_MURDER(type) strcat(MURDER_##type, "^BG%s")
+
+    #define MURDER_FRAG             _("^K3%sYou fragged ^BG%s")
+    #define MURDER_FRAG2            _("^K3%sYou scored against ^BG%s")
+    #define MURDER_FRAGGED          _("^K1%sYou were fragged by ^BG%s")
+    #define MURDER_FRAGGED2         _("^K1%sYou were scored against by ^BG%s")
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG,                   1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAG,                    MURDER_FRAG2                   )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED,                1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAGGED,                 MURDER_FRAGGED2                )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_VERBOSE,        1,    1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  VERBOSE_MURDER(FRAGGED),        VERBOSE_MURDER(FRAGGED2)       )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_VERBOSE,           1,    1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  VERBOSE_MURDER(FRAG),           VERBOSE_MURDER(FRAG2)          )
+
+    #define MURDER_FRAG_FIRE        _("^K3%sYou burned ^BG%s")
+    #define MURDER_FRAG_FIRE2       _("^K3%sYou scored against ^BG%s")
+    #define MURDER_FRAGGED_FIRE     _("^K1%sYou were burned by ^BG%s")
+    #define MURDER_FRAGGED_FIRE2    _("^K1%sYou were scored against by ^BG%s")
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_FIRE,              1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAG_FIRE,               MURDER_FRAG_FIRE2              )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_FIRE,           1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAGGED_FIRE,            MURDER_FRAGGED_FIRE2           )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_FIRE_VERBOSE,   1,    1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  VERBOSE_MURDER(FRAGGED_FIRE),   VERBOSE_MURDER(FRAGGED_FIRE2)  )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_FIRE_VERBOSE,      1,    1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  VERBOSE_MURDER(FRAG_FIRE),      VERBOSE_MURDER(FRAG_FIRE2)     )
+
+    #define MURDER_FRAG_FREEZE      _("^K3%sYou froze ^BG%s")
+    #define MURDER_FRAG_FREEZE2     _("^K3%sYou scored against ^BG%s")
+    #define MURDER_FRAGGED_FREEZE   _("^K1%sYou were frozen by ^BG%s")
+    #define MURDER_FRAGGED_FREEZE2  _("^K1%sYou were scored against by ^BG%s")
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_FREEZE,            1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAG_FREEZE,             MURDER_FRAG_FREEZE2            )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_FREEZE,         1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_FRAGGED_FREEZE,          MURDER_FRAGGED_FREEZE2         )
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAGGED_FREEZE_VERBOSE, 1,    1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  VERBOSE_MURDER(FRAGGED_FREEZE), VERBOSE_MURDER(FRAGGED_FREEZE2))
+    MSG_CENTER_NOTIF(DEATH_MURDER_FRAG_FREEZE_VERBOSE,    1,    1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  VERBOSE_MURDER(FRAG_FREEZE),    VERBOSE_MURDER(FRAG_FREEZE2)   )
+
+    #define MURDER_TYPEFRAG         _("^K1%sYou typefragged ^BG%s")
+    #define MURDER_TYPEFRAG2        _("^K1%sYou scored against ^BG%s^K1 while they were typing")
+    #define MURDER_TYPEFRAGGED      _("^K1%sYou were typefragged by ^BG%s")
+    #define MURDER_TYPEFRAGGED2     _("^K1%sYou were scored against by ^BG%s^K1 while typing")
+    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAG,               1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_TYPEFRAG,                MURDER_TYPEFRAG2               )
+    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAGGED,            1,    1, 1, "spree_cen s1",               CPID_Null,  "0 0",  MURDER_TYPEFRAGGED,             MURDER_TYPEFRAGGED2            )
+    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAGGED_VERBOSE,    1,    1, 4, "spree_cen s1 frag_stats",    CPID_Null,  "0 0",  VERBOSE_MURDER(TYPEFRAGGED),    VERBOSE_MURDER(TYPEFRAGGED2)   )
+    MSG_CENTER_NOTIF(DEATH_MURDER_TYPEFRAG_VERBOSE,       1,    1, 2, "spree_cen s1 frag_ping",     CPID_Null,  "0 0",  VERBOSE_MURDER(TYPEFRAG),       VERBOSE_MURDER(TYPEFRAG2)      )
+
+    MSG_CENTER_NOTIF(NADE_THROW,                        1,      0, 0, "nade_key",       CPID_NADES,             "0 0",  _("^BGPress ^F2%s^BG again to toss the nade!"), "")
     MSG_CENTER_NOTIF(NADE_BONUS,                        1,      0, 0, "",               CPID_NADES,             "0 0",  _("^F2You got a ^K1BONUS GRENADE^F2!"), "")
 
     MSG_CENTER_NOTIF(DEATH_SELF_AUTOTEAMCHANGE,         1,      0, 1, "death_team",     CPID_Null,              "0 0",  _("^BGYou have been moved into a different team\nYou are now on: %s"), "")
 
     MSG_CENTER_NOTIF(EXTRALIVES,                        1,      0, 0, "",               CPID_Null,              "0 0",  _("^F2You picked up some extra lives"), "")
 
-    MSG_CENTER_NOTIF(FREEZETAG_FREEZE,                  1,      1, 0, "s1",             CPID_Null,              "0 0",  _("^K3You froze ^BG%s"), "")
-    MSG_CENTER_NOTIF(FREEZETAG_FROZEN,                  1,      1, 0, "s1",             CPID_Null,              "0 0",  _("^K1You were frozen by ^BG%s"), "")
     MSG_CENTER_NOTIF(FREEZETAG_REVIVE,                  1,      1, 0, "s1",             CPID_Null,              "0 0",  _("^K3You revived ^BG%s"), "")
     MSG_CENTER_NOTIF(FREEZETAG_REVIVE_SELF,             1,      0, 0, "",               CPID_Null,              "0 0",  _("^K3You revived yourself"), "")
     MSG_CENTER_NOTIF(FREEZETAG_REVIVED,                 1,      1, 0, "s1",             CPID_Null,              "0 0",  _("^K3You were revived by ^BG%s"), "")
     MSG_CENTER_NOTIF(NIX_COUNTDOWN,                     1,      0, 2, "item_wepname",   CPID_NIX,               "1 f2", _("^F2^COUNT^BG until weapon change...\nNext weapon: ^F1%s"), "")
     MSG_CENTER_NOTIF(NIX_NEWWEAPON,                     1,      0, 1, "item_wepname",   CPID_NIX,               "0 0",  _("^F2Active weapon: ^F1%s"), "")
 
-    MSG_CENTER_NOTIF(NADE,                              1,      0, 0, "",               CPID_Null,              "0 0",  _("^BGPress ^F2DROPWEAPON^BG again to toss the grenade!"), "")
-
     MSG_CENTER_NOTIF(ONS_CAPTURE,                       1,      1, 0, "s1",             CPID_ONSLAUGHT,         "0 0",  _("^BGYou captured %s^BG control point"), "")
     MULTITEAM_CENTER(ONS_CAPTURE, 4,                    1,      1, 0, "s1",             CPID_ONSLAUGHT,         "0 0",  _("^TC^TT^BG team captured %s^BG control point"), "", NAME)
     MSG_CENTER_NOTIF(ONS_CONTROLPOINT_SHIELDED,         1,      0, 0, "",               CPID_ONS_CAPSHIELD,     "0 0",  _("^BGThis control point currently cannot be captured"), "")
     MSG_CENTER_NOTIF(TEAMCHANGE_SUICIDE,                1,      0, 1, "",               CPID_TEAMCHANGE,        "1 f1", _("^K1Suicide in ^COUNT"), "")
 
     MSG_CENTER_NOTIF(TIMEOUT_BEGINNING,                 1,      0, 1, "",               CPID_TIMEOUT,           "1 f1", _("^F4Timeout begins in ^COUNT"), "")
-    MSG_CENTER_NOTIF(TIMEOUT_ENDING,                    1,      0, 1, "",               CPID_TIMEOUT,           "1 f1", _("^F4Timeout ends in ^COUNT"), "")
+    MSG_CENTER_NOTIF(TIMEOUT_ENDING,                    1,      0, 1, "",               CPID_TIMEIN,            "1 f1", _("^F4Timeout ends in ^COUNT"), "")
 
     MSG_CENTER_NOTIF(JOIN_PREVENT_MINIGAME,             1,      0, 0, "",               CPID_Null,              "0 0",  _("^K1Cannot join given minigame session!"), "" )
 
     MSG_CHOICE_NOTIF(CTF_PICKUP_ENEMY_TEAM,     1, 2,   MSG_CENTER, CENTER_CTF_PICKUP_ENEMY_TEAM,       CENTER_CTF_PICKUP_ENEMY_TEAM_VERBOSE)
     MSG_CHOICE_NOTIF(FRAG,                      1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAG,           CENTER_DEATH_MURDER_FRAG_VERBOSE)
     MSG_CHOICE_NOTIF(FRAGGED,                   1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAGGED,        CENTER_DEATH_MURDER_FRAGGED_VERBOSE)
+    MSG_CHOICE_NOTIF(FRAG_FIRE,                 1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAG_FIRE,      CENTER_DEATH_MURDER_FRAG_FIRE_VERBOSE)
+    MSG_CHOICE_NOTIF(FRAGGED_FIRE,              1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAGGED_FIRE,   CENTER_DEATH_MURDER_FRAGGED_FIRE_VERBOSE)
+    MSG_CHOICE_NOTIF(FRAG_FREEZE,               1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAG_FREEZE,    CENTER_DEATH_MURDER_FRAG_FREEZE_VERBOSE)
+    MSG_CHOICE_NOTIF(FRAGGED_FREEZE,            1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_FRAGGED_FREEZE, CENTER_DEATH_MURDER_FRAGGED_FREEZE_VERBOSE)
     MSG_CHOICE_NOTIF(TYPEFRAG,                  1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAG,       CENTER_DEATH_MURDER_TYPEFRAG_VERBOSE)
     MSG_CHOICE_NOTIF(TYPEFRAGGED,               1, 1,   MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAGGED,    CENTER_DEATH_MURDER_TYPEFRAGGED_VERBOSE)
index 2a1eb458f4a8a4cef20746a2cd04a9ebb313c635..d2682a148f70c937ea202d0ed7e1b1822109b114 100644 (file)
@@ -65,6 +65,7 @@ ENUMCLASS(CPID)
        CASE(CPID, RACE_FINISHLAP)
        CASE(CPID, TEAMCHANGE)
        CASE(CPID, TIMEOUT)
+       CASE(CPID, TIMEIN)
        CASE(CPID, VEHICLES)
        CASE(CPID, VEHICLES_OTHER)
        /** always last */
@@ -352,6 +353,7 @@ float autocvar_notification_show_sprees_center_specialonly = true;
        race_diff: show time difference between f2 and f3
        missing_teams: show which teams still need players
        pass_key: find the keybind for "passing" or "dropping" in CTF game mode
+       nade_key: find the keybind for nade throwing
        frag_ping: show the ping of a player
        frag_stats: show health/armor/ping of a player
        frag_pos: show score status and position in the match of a player
@@ -412,6 +414,7 @@ string BUFF_NAME(int i);
        ARG_CASE(ARG_CS_SV,     "race_diff",     ((f2 > f3) ? sprintf(CCR("^1[+%s]"), mmssss(f2 - f3)) : sprintf(CCR("^2[-%s]"), mmssss(f3 - f2)))) \
        ARG_CASE(ARG_CS,        "missing_teams", notif_arg_missing_teams(f1)) \
        ARG_CASE(ARG_CS,        "pass_key",      getcommandkey(_("drop flag"), "+use")) \
+       ARG_CASE(ARG_CS,        "nade_key",      getcommandkey(_("throw nade"), "dropweapon")) \
        ARG_CASE(ARG_CS,        "frag_ping",     notif_arg_frag_ping(true, f2)) \
        ARG_CASE(ARG_CS,        "frag_stats",    notif_arg_frag_stats(f2, f3, f4)) \
        /*ARG_CASE(ARG_CS,      "frag_pos",      ((Should_Print_Score_Pos(f1)) ? sprintf("\n^BG%s", Read_Score_Pos(f1)) : ""))*/ \
index db5d29cefda9ec18af34da81e6e57708630c53a4..46e80fbc3e47aba9df7b2c659fa0ffa1b12eb6a5 100644 (file)
@@ -3,6 +3,9 @@
 #define IS_ONGROUND(s)                      boolean((s).flags & FL_ONGROUND)
 #define SET_ONGROUND(s)                     ((s).flags |= FL_ONGROUND)
 #define UNSET_ONGROUND(s)                   ((s).flags &= ~FL_ONGROUND)
+#define IS_ONSLICK(s)                                          boolean((s).flags & FL_ONSLICK)
+#define SET_ONSLICK(s)                                         ((s).flags |= FL_ONSLICK)
+#define UNSET_ONSLICK(s)                                       ((s).flags &= ~FL_ONSLICK)
 
 #ifdef CSQC
 .float bouncestop;
@@ -79,6 +82,8 @@ const int MOVETYPE_ANGLENOCLIP      = 1;
 const int MOVETYPE_ANGLECLIP        = 2;
 #endif
 
+const int FL_ONSLICK = BIT(20);
+
 const int MOVETYPE_FAKEPUSH         = 13;
 
 const int MOVEFLAG_VALID = BIT(23);
index f5c0e0316e3340bb995e04577ad9719375c063b8..b5635e0945e0625dce91d9877bdb67fe7ab32285 100644 (file)
@@ -39,6 +39,13 @@ void Physics_UpdateStats(entity this, float maxspd_mod)
        STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, this) = Physics_ClientOption(this, "airspeedlimit_nonqw", autocvar_sv_airspeedlimit_nonqw) * maxspd_mod;
        STAT(MOVEVARS_MAXSPEED, this) = Physics_ClientOption(this, "maxspeed", autocvar_sv_maxspeed) * maxspd_mod; // also slow walking
 
+       STAT(PL_MIN, this) = autocvar_sv_player_mins;
+       STAT(PL_MAX, this) = autocvar_sv_player_maxs;
+       STAT(PL_VIEW_OFS, this) = autocvar_sv_player_viewoffset;
+       STAT(PL_CROUCH_MIN, this) = autocvar_sv_player_crouch_mins;
+       STAT(PL_CROUCH_MAX, this) = autocvar_sv_player_crouch_maxs;
+       STAT(PL_CROUCH_VIEW_OFS, this) = autocvar_sv_player_crouch_viewoffset;
+
        // old stats
        // fix some new settings
        STAT(MOVEVARS_AIRACCEL_QW_STRETCHFACTOR, this) = Physics_ClientOption(this, "airaccel_qw_stretchfactor", autocvar_sv_airaccel_qw_stretchfactor);
@@ -49,6 +56,7 @@ void Physics_UpdateStats(entity this, float maxspd_mod)
        STAT(MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION, this) = Physics_ClientOption(this, "airaccel_sideways_friction", autocvar_sv_airaccel_sideways_friction);
        STAT(MOVEVARS_AIRCONTROL, this) = Physics_ClientOption(this, "aircontrol", autocvar_sv_aircontrol);
        STAT(MOVEVARS_AIRCONTROL_POWER, this) = Physics_ClientOption(this, "aircontrol_power", autocvar_sv_aircontrol_power);
+       STAT(MOVEVARS_AIRCONTROL_BACKWARDS, this) = Physics_ClientOption(this, "aircontrol_backwards", autocvar_sv_aircontrol_backwards);
        STAT(MOVEVARS_AIRCONTROL_PENALTY, this) = Physics_ClientOption(this, "aircontrol_penalty", autocvar_sv_aircontrol_penalty);
        STAT(MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL, this) = Physics_ClientOption(this, "warsowbunny_airforwardaccel", autocvar_sv_warsowbunny_airforwardaccel);
        STAT(MOVEVARS_WARSOWBUNNY_TOPSPEED, this) = Physics_ClientOption(this, "warsowbunny_topspeed", autocvar_sv_warsowbunny_topspeed);
@@ -119,7 +127,11 @@ void PM_ClientMovement_UpdateStatus(entity this)
 
 void CPM_PM_Aircontrol(entity this, float dt, vector wishdir, float wishspeed)
 {
-       float k = 32 * (2 * IsMoveInDirection(this.movement, 0) - 1);
+       float movity = IsMoveInDirection(this.movement, 0);
+       if(PHYS_AIRCONTROL_BACKWARDS(this))
+               movity += IsMoveInDirection(this.movement, 180);
+
+       float k = 32 * (2 * movity - 1);
        if (k <= 0)
                return;
 
@@ -295,7 +307,7 @@ bool PlayerJump(entity this)
        }
 
        if (!doublejump)
-               if (!IS_ONGROUND(this))
+               if (!IS_ONGROUND(this) && !IS_ONSLICK(this))
                        return IS_JUMP_HELD(this);
 
        bool track_jump = PHYS_CL_TRACK_CANJUMP(this);
@@ -332,7 +344,7 @@ bool PlayerJump(entity this)
                }
        }
 
-       if (!WAS_ONGROUND(this))
+       if (!WAS_ONGROUND(this) && !WAS_ONSLICK(this))
        {
 #ifdef SVQC
                if(autocvar_speedmeter)
@@ -354,6 +366,7 @@ bool PlayerJump(entity this)
        this.velocity_z += mjumpheight;
 
        UNSET_ONGROUND(this);
+       UNSET_ONSLICK(this);
        SET_JUMP_HELD(this);
 
 #ifdef SVQC
@@ -629,6 +642,24 @@ void PM_Footsteps(entity this)
 #endif
 }
 
+void PM_check_slick(entity this)
+{
+       if(!IS_ONGROUND(this))
+               return;
+
+       if(!PHYS_SLICK_APPLYGRAVITY(this))
+               return;
+
+       tracebox(this.origin, this.mins, this.maxs, this.origin - '0 0 1', MOVE_NOMONSTERS, this);
+       if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+       {
+               UNSET_ONGROUND(this);
+               SET_ONSLICK(this);
+       }
+       else
+               UNSET_ONSLICK(this);
+}
+
 void PM_check_blocked(entity this)
 {
 #ifdef SVQC
@@ -639,8 +670,6 @@ void PM_check_blocked(entity this)
 #endif
 }
 
-.vector oldmovement;
-
 void PM_jetpack(entity this, float maxspd_mod, float dt)
 {
        //makevectors(this.v_angle.y * '0 1 0');
index fb7edc83a3b571e4820cd4304e0bb8fcc3973dc8..5c0b104178b0a385ee2509f9aa814f0d2b1c705c 100644 (file)
@@ -46,6 +46,7 @@ bool IsFlying(entity a);
 #define PHYS_AIRCONTROL(s)                  STAT(MOVEVARS_AIRCONTROL, s)
 #define PHYS_AIRCONTROL_PENALTY(s)          STAT(MOVEVARS_AIRCONTROL_PENALTY, s)
 #define PHYS_AIRCONTROL_POWER(s)            STAT(MOVEVARS_AIRCONTROL_POWER, s)
+#define PHYS_AIRCONTROL_BACKWARDS(s)        STAT(MOVEVARS_AIRCONTROL_BACKWARDS, s)
 #define PHYS_AIRSPEEDLIMIT_NONQW(s)         STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, s)
 #define PHYS_AIRSTOPACCELERATE(s)           STAT(MOVEVARS_AIRSTOPACCELERATE, s)
 #define PHYS_AIRSTRAFEACCELERATE(s)         STAT(MOVEVARS_AIRSTRAFEACCELERATE, s)
@@ -96,6 +97,8 @@ bool IsFlying(entity a);
 
 #define UPWARD_VELOCITY_CLEARS_ONGROUND(s)  STAT(GAMEPLAYFIX_UPVELOCITYCLEARSONGROUND, s)
 
+#define PHYS_SLICK_APPLYGRAVITY(s)             STAT(SLICK_APPLYGRAVITY, s)
+
 #define PHYS_INPUT_BUTTON_ATCK(s)           PHYS_INPUT_BUTTON_BUTTON1(s)
 #define PHYS_INPUT_BUTTON_JUMP(s)           PHYS_INPUT_BUTTON_BUTTON2(s)
 #define PHYS_INPUT_BUTTON_ATCK2(s)          PHYS_INPUT_BUTTON_BUTTON3(s)
@@ -155,6 +158,7 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK)
 #define UNSET_JUMP_HELD(s)                  ((s).flags |= FL_JUMPRELEASED)
 
 #define WAS_ONGROUND(s)                     boolean((s).lastflags & FL_ONGROUND)
+#define WAS_ONSLICK(s)                      boolean((s).lastflags & FL_ONSLICK)
 
 #define ITEMS_STAT(s)                       ((s).items)
 
@@ -246,6 +250,8 @@ STATIC_INIT(PHYS_INPUT_BUTTON_JETPACK)
 
        bool Physics_Valid(string thecvar);
 
+       void Physics_UpdateStats(entity this, float maxspd_mod);
+
        .float stat_sv_airspeedlimit_nonqw = _STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW);
        .float stat_sv_maxspeed = _STAT(MOVEVARS_MAXSPEED);
 
index d6aa068ea67eb775da3cba979c9a62398e9cbcf2..09921c6f86cbfe1cbaaceb4c83b4b0cbc5798f9e 100644 (file)
@@ -263,6 +263,11 @@ REGISTER_STAT(CAMERA_SPECTATOR, int)
 
 REGISTER_STAT(SPECTATORSPEED, float)
 
+#ifdef SVQC
+bool autocvar_sv_slick_applygravity;
+#endif
+REGISTER_STAT(SLICK_APPLYGRAVITY, bool, autocvar_sv_slick_applygravity)
+
 #ifdef SVQC
 #include "physics/movetypes/movetypes.qh"
 #endif
@@ -272,6 +277,7 @@ REGISTER_STAT(MOVEVARS_AIRCONTROL_PENALTY, float)
 REGISTER_STAT(MOVEVARS_AIRSPEEDLIMIT_NONQW, float)
 REGISTER_STAT(MOVEVARS_AIRSTRAFEACCEL_QW, float)
 REGISTER_STAT(MOVEVARS_AIRCONTROL_POWER, float)
+REGISTER_STAT(MOVEVARS_AIRCONTROL_BACKWARDS, bool)
 noref bool autocvar_sv_gameplayfix_nogravityonground;
 REGISTER_STAT(MOVEFLAGS, int, MOVEFLAG_VALID
                               | (autocvar_sv_gameplayfix_q2airaccelerate ? MOVEFLAG_Q2AIRACCELERATE : 0)
index f9f89a73fa6ec8a5da6bf70d62227079c8569d5d..7424d695aa041cf2eb557576d209df327ae60a77 100644 (file)
@@ -840,7 +840,7 @@ LABEL(pickup)
                                if(it.classname != "item_flag_team" && it.classname != "item_kh_key")
                                {
                                        Item_Show(it, -1);
-                                       RandomSelection_Add(it, 0, string_null, it.cnt, 0);
+                                       RandomSelection_AddEnt(it, it.cnt, 0);
                                }
                        });
                        e = RandomSelection_chosen_ent;
@@ -882,7 +882,7 @@ void Item_FindTeam(entity this)
                IL_EACH(g_items, it.team == this.team,
                {
                        if(it.classname != "item_flag_team" && it.classname != "item_kh_key")
-                               RandomSelection_Add(it, 0, string_null, it.cnt, 0);
+                               RandomSelection_AddEnt(it, it.cnt, 0);
                });
 
                e = RandomSelection_chosen_ent;
index 1c65e806af7e97544ef801904c7f9c1aeb0e741d..06e14555ed0aca53537f9c2143ceabfc96b5b2b7 100644 (file)
@@ -29,6 +29,7 @@ void StartItem(entity this, entity a);
 
 #ifdef CSQC
 
+bool   autocvar_cl_items_nofade;
 float  autocvar_cl_animate_items = 1;
 float  autocvar_cl_ghost_items = 0.45;
 vector autocvar_cl_ghost_items_color = '-1 -1 -1';
index 13094e790aa527db25853d5a7f72944490c2b57b..b6dcd01f8843cc5f9310db9b93d213c4848e80ed 100644 (file)
@@ -109,6 +109,7 @@ void func_breakable_look_destroyed(entity this)
                        this.origin_z = floorZ;
                }
                _setmodel(this, this.mdl_dead);
+               ApplyMinMaxScaleAngles(this);
                this.effects &= ~EF_NODRAW;
        }
 
@@ -120,6 +121,7 @@ void func_breakable_look_destroyed(entity this)
 void func_breakable_look_restore(entity this)
 {
        _setmodel(this, this.mdl);
+       ApplyMinMaxScaleAngles(this);
        this.effects &= ~EF_NODRAW;
 
        if(this.mdl_dead != "") // only do this if we use mdl_dead, to behave better with misc_follow
@@ -146,6 +148,7 @@ void func_breakable_behave_destroyed(entity this)
                stopsound (this, CH_TRIGGER_SINGLE);
 }
 
+void func_breakable_destroy(entity this, entity actor, entity trigger);
 void func_breakable_behave_restore(entity this)
 {
        this.health = this.max_health;
@@ -162,6 +165,8 @@ void func_breakable_behave_restore(entity this)
                this.bot_attack = true;
                this.event_damage = func_breakable_damage;
        }
+       if(this.spawnflags & 4)
+               this.use = func_breakable_destroy; // don't need to set it usually, as .use isn't reset
        this.state = 0;
        this.nextthink = 0; // cancel auto respawn
        func_breakable_colormod(this);
index b5e97b1fc7516f1a082a82d69c354a85f4b8594e..949f478fdd3c714e9ba3402416be4b182c348b7a 100644 (file)
@@ -92,7 +92,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
                                        RandomSelection_Init();
                                        FOREACH_WORD(teleporter.noise, true,
                                        {
-                                               RandomSelection_Add(NULL, 0, it, 1, 1);
+                                               RandomSelection_AddString(it, 1, 1);
                                        });
                                        thesound = RandomSelection_chosen_string;
                                }
@@ -198,7 +198,7 @@ entity Simple_TeleportPlayer(entity teleporter, entity player)
                                if(check_tdeath(player, locout, '0 0 0', '0 0 0'))
                                        p = 0;
                        }
-                       RandomSelection_Add(it, 0, string_null, (it.cnt ? it.cnt : 1), p);
+                       RandomSelection_AddEnt(it, (it.cnt ? it.cnt : 1), p);
                });
                e = RandomSelection_chosen_ent;
        }
index c5049da3931f73b8eab4288601d30fd71426d25a..dc1a781f81a0c81933fae9d47f63baf53506555a 100644 (file)
@@ -3,7 +3,7 @@
 void delay_use(entity this, entity actor, entity trigger)
 {
    setthink(this, SUB_UseTargets_self);
-   this.nextthink = this.wait;
+   this.nextthink = time + this.wait;
 }
 
 void delay_reset(entity this)
index ef13dd5bec0d95af57d2432ba25e83953335cfa5..498f0ff2dbbffb885c36a546ff7f4faba2bac378 100644 (file)
@@ -155,9 +155,9 @@ void trigger_push_touch(entity this, entity toucher)
                for(e = NULL; (e = find(e, targetname, this.target)); )
                {
                        if(e.cnt)
-                               RandomSelection_Add(e, 0, string_null, e.cnt, 1);
+                               RandomSelection_AddEnt(e, e.cnt, 1);
                        else
-                               RandomSelection_Add(e, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(e, 1, 1);
                }
                toucher.velocity = trigger_push_calculatevelocity(toucher.origin, RandomSelection_chosen_ent, this.height);
        }
index d53ac5dca6720b9d3669088704da27e04e9bd744..a600263542afab2266461d91a2f350489b4344b9 100644 (file)
@@ -102,9 +102,9 @@ bool viewloc_send(entity this, entity to, int sf)
        WriteCoord(MSG_ENTITY, this.origin_y);
        WriteCoord(MSG_ENTITY, this.origin_z);
 
-       WriteCoord(MSG_ENTITY, this.angles_x);
-       WriteCoord(MSG_ENTITY, this.angles_y);
-       WriteCoord(MSG_ENTITY, this.angles_z);
+       WriteAngle(MSG_ENTITY, this.angles_x);
+       WriteAngle(MSG_ENTITY, this.angles_y);
+       WriteAngle(MSG_ENTITY, this.angles_z);
 
        return true;
 }
@@ -176,9 +176,9 @@ NET_HANDLE(ENT_CLIENT_VIEWLOC, bool isnew)
        this.origin_z = ReadCoord();
        setorigin(this, this.origin);
 
-       this.movedir_x = ReadCoord();
-       this.movedir_y = ReadCoord();
-       this.movedir_z = ReadCoord();
+       this.movedir_x = ReadAngle();
+       this.movedir_y = ReadAngle();
+       this.movedir_z = ReadAngle();
 
        return = true;
 
index 54e1e09919f06666bb6ff1b22c379b5f7577bc0c..1f5139896d19eea55fa89b5c5d8085a9f2b37e9f 100644 (file)
@@ -203,6 +203,7 @@ void SUB_UseTargets_Ex(entity this, entity actor, entity trigger, bool preventRe
                t.target2 = this.target2;
                t.target3 = this.target3;
                t.target4 = this.target4;
+               t.antiwall_flag = this.antiwall_flag;
                return;
        }
 
@@ -260,7 +261,7 @@ void SUB_UseTargets_Ex(entity this, entity actor, entity trigger, bool preventRe
                                {
                                        if(this.target_random)
                                        {
-                                               RandomSelection_Add(t, 0, string_null, 1, 0);
+                                               RandomSelection_AddEnt(t, 1, 0);
                                        }
                                        else
                                        {
index a893b3e8a77d30c281ef602770dc6098319947f6..c21e327d4470655336e6033d1823587c65f6e458 100644 (file)
@@ -156,17 +156,14 @@ void turret_draw2d(entity this)
 
        o_z = 0;
 
-       float edgedistance_min, crosshairdistance;
-               edgedistance_min = min((o_y - (vid_conheight * waypointsprite_edgeoffset_top)),
+       float edgedistance_min = min((o.y - (vid_conheight * waypointsprite_edgeoffset_top)),
        (o_x - (vid_conwidth * waypointsprite_edgeoffset_left)),
        (vid_conwidth - (vid_conwidth * waypointsprite_edgeoffset_right)) - o_x,
        (vid_conheight - (vid_conheight * waypointsprite_edgeoffset_bottom)) - o_y);
 
-       float vidscale = max(vid_conwidth / vid_width, vid_conheight / vid_height);
+       float crosshairdistance = sqrt( pow(o.x - vid_conwidth/2, 2) + pow(o.y - vid_conheight/2, 2) );
 
-       crosshairdistance = sqrt( pow(o_x - vid_conwidth/2, 2) + pow(o_y - vid_conheight/2, 2) );
-
-       t = waypointsprite_scale * vidscale;
+       t = waypointsprite_scale;
        a *= waypointsprite_alpha;
 
        {
index c5a3728d134cf20b1e2f068dc803ff943b647cad..62759c058f3df63b37713919baf4f55a9c8314ee 100644 (file)
@@ -8,7 +8,6 @@ entity turret_select_target(entity this);
 
 // turret fields
 .float ticrate; // interal ai think rate
-.vector aim_idle; // where to aim while idle
 .entity tur_head; // top part of the turret
 .entity tur_defend; // defend this entity
 .vector tur_shotorg; // shot origin
index 60a8ee07760fbe897e58cd58fab2e22904337728..cd62f0746b69f6b2dc892f42a1938807cf566d07 100644 (file)
@@ -900,7 +900,7 @@ bool vehicle_impulse(entity this, int imp)
 
 void vehicles_enter(entity pl, entity veh)
 {
-   // Remove this when bots know how to use vehicles
+       // Remove this when bots know how to use vehicles
        if((IS_BOT_CLIENT(pl) && !autocvar_g_vehicles_allow_bots))
                return;
 
@@ -1224,7 +1224,7 @@ bool vehicle_initialize(entity this, Vehicle info, bool nodrop)
        else
                this.nextthink = time + game_starttime;
 
-       if(MUTATOR_CALLHOOK(VehicleSpawn, this))
+       if(!MUTATOR_CALLHOOK(VehicleInit, this))
                return false;
 
        return true;
index 403c9de9ddb1bb73a8e969e70afea9f324c1ec9f..3f5f40435819d6de9b7f748eeb7724af411623c6 100644 (file)
@@ -393,8 +393,9 @@ bool bumblebee_pilot_frame(entity this, float dt)
 
        if(intermission_running)
        {
-               vehic.velocity = '0 0 0';
-               vehic.avelocity = '0 0 0';
+               vehic.solid = SOLID_NOT;
+               vehic.takedamage = DAMAGE_NO;
+               set_movetype(vehic, MOVETYPE_NONE);
                return;
        }
 
index c8f8cf84eaf33bb697b4963f96aad90c35e06a47..41a31743f621d94fcd8c35db61f72d499feeeded 100644 (file)
@@ -153,8 +153,9 @@ bool racer_frame(entity this, float dt)
 
        if(intermission_running)
        {
-               vehic.velocity = '0 0 0';
-               vehic.avelocity = '0 0 0';
+               vehic.solid = SOLID_NOT;
+               vehic.takedamage = DAMAGE_NO;
+               set_movetype(vehic, MOVETYPE_NONE);
                return;
        }
 
index a03c936bd787f6d8e075857ed38b3efc8c5841f3..1068e7430dd47a8cc36b008575f2077b98071d9e 100644 (file)
@@ -135,8 +135,9 @@ bool raptor_frame(entity this, float dt)
 
        if(intermission_running)
        {
-               vehic.velocity = '0 0 0';
-               vehic.avelocity = '0 0 0';
+               vehic.solid = SOLID_NOT;
+               vehic.takedamage = DAMAGE_NO;
+               set_movetype(vehic, MOVETYPE_NONE);
                return;
        }
 
index ec06104824e1c555bc7792f0929787344625c1d2..347d2120aa1a17155db038821fbfcdc6f880c5f8 100644 (file)
@@ -50,8 +50,9 @@ bool spiderbot_frame(entity this, float dt)
 
        if(intermission_running)
        {
-               vehic.velocity = '0 0 0';
-               vehic.avelocity = '0 0 0';
+               vehic.solid = SOLID_NOT;
+               vehic.takedamage = DAMAGE_NO;
+               set_movetype(vehic, MOVETYPE_NONE);
                return;
        }
 
index cf55aa65214b7a84673da155f3ffb0eece56eb36..763dd6e8de83646cefda1786d8f6b51d3ce1dbaf 100644 (file)
@@ -204,7 +204,7 @@ void W_RandomWeapons(entity e, float n)
                RandomSelection_Init();
                FOREACH(Weapons, it != WEP_Null, {
                        if (remaining & (it.m_wepset))
-                               RandomSelection_Add(it, 0, string_null, 1, 1);
+                               RandomSelection_AddEnt(it, 1, 1);
                });
                Weapon w = RandomSelection_chosen_ent;
                result |= WepSet_FromWeapon(w);
index a61dc0f031d3e9ed4da12e1be93b8e69c703b9fc..57697635791cd7b229ba5bf6639717a61a21c3c1 100644 (file)
@@ -340,6 +340,8 @@ void W_Arc_Beam_Think(entity this)
                ||
                forbidWeaponUse(this.owner)
                ||
+               PS(this.owner).m_switchweapon != WEP_ARC
+               ||
                (!PHYS_INPUT_BUTTON_ATCK(this.owner) && !burst )
                ||
                this.owner.vehicle
index 1fdb8d6ad6773a78cba7a24b428b15c389193357..df9bd470a31b9fe70caaf68cde8a2d4ff6aebf7f 100644 (file)
@@ -40,6 +40,7 @@ CLASS(Devastator, Weapon)
         P(class, prefix, remote_edgedamage, float, NONE) \
         P(class, prefix, remote_force, float, NONE) \
         P(class, prefix, remote_jump_damage, float, NONE) \
+        P(class, prefix, remote_jump_force, float, NONE) \
         P(class, prefix, remote_jump_radius, float, NONE) \
         P(class, prefix, remote_jump_velocity_z_add, float, NONE) \
         P(class, prefix, remote_jump_velocity_z_max, float, NONE) \
@@ -141,50 +142,56 @@ void W_Devastator_DoRemoteExplode(entity this, .entity weaponentity)
        this.event_damage = func_null;
        this.takedamage = DAMAGE_NO;
 
-       float handled_as_rocketjump = false;
+       bool handled_as_rocketjump = false;
+       entity head = NULL;
 
-       entity head = WarpZone_FindRadius(
-               this.origin,
-               WEP_CVAR(devastator, remote_jump_radius),
-               false
-       );
-
-       while(head)
+       if(WEP_CVAR(devastator, remote_jump_radius))
        {
-               if(head.takedamage && (head == this.realowner))
+               head = WarpZone_FindRadius(
+                       this.origin,
+                       WEP_CVAR(devastator, remote_jump_radius),
+                       false
+               );
+
+               while(head)
                {
-                       float distance_to_head = vlen(this.origin - head.WarpZone_findradius_nearest);
-                       if(distance_to_head <= WEP_CVAR(devastator, remote_jump_radius))
+                       if(head.takedamage && (head == this.realowner))
                        {
-                               // we handled this as a rocketjump :)
-                               handled_as_rocketjump = true;
-
-                               // modify velocity
-                               head.velocity_x *= 0.9;
-                               head.velocity_y *= 0.9;
-                               head.velocity_z = bound(
-                                       WEP_CVAR(devastator, remote_jump_velocity_z_min),
-                                       head.velocity.z + WEP_CVAR(devastator, remote_jump_velocity_z_add),
-                                       WEP_CVAR(devastator, remote_jump_velocity_z_max)
-                               );
-
-                               // now do the damage
-                               RadiusDamage(
-                                       this,
-                                       head,
-                                       WEP_CVAR(devastator, remote_jump_damage),
-                                       WEP_CVAR(devastator, remote_jump_damage),
-                                       WEP_CVAR(devastator, remote_jump_radius),
-                                       NULL,
-                                       head,
-                                       0,
-                                       this.projectiledeathtype | HITTYPE_BOUNCE,
-                                       NULL
-                               );
-                               break;
+                               if(vdist(this.origin - head.WarpZone_findradius_nearest, <=, WEP_CVAR(devastator, remote_jump_radius)))
+                               {
+                                       // we handled this as a rocketjump :)
+                                       handled_as_rocketjump = true;
+
+                                       // modify velocity
+                                       if(WEP_CVAR(devastator, remote_jump_velocity_z_add))
+                                       {
+                                               head.velocity_x *= 0.9;
+                                               head.velocity_y *= 0.9;
+                                               head.velocity_z = bound(
+                                                       WEP_CVAR(devastator, remote_jump_velocity_z_min),
+                                                       head.velocity.z + WEP_CVAR(devastator, remote_jump_velocity_z_add),
+                                                       WEP_CVAR(devastator, remote_jump_velocity_z_max)
+                                               );
+                                       }
+
+                                       // now do the damage
+                                       RadiusDamage(
+                                               this,
+                                               head,
+                                               WEP_CVAR(devastator, remote_jump_damage),
+                                               WEP_CVAR(devastator, remote_jump_damage),
+                                               WEP_CVAR(devastator, remote_jump_radius),
+                                               NULL,
+                                               head,
+                                               (WEP_CVAR(devastator, remote_jump_force) ? WEP_CVAR(devastator, remote_jump_force) : 0),
+                                               this.projectiledeathtype | HITTYPE_BOUNCE,
+                                               NULL
+                                       );
+                                       break;
+                               }
                        }
+                       head = head.chain;
                }
-               head = head.chain;
        }
 
        RadiusDamage(
index c2b93747c8c4c14d7d9437f6c50e2cc2934b8d89..ae1e48bb2c3e7f511af59d27ba3235a2434f07f5 100644 (file)
@@ -150,7 +150,7 @@ void W_Fireball_LaserPlay(entity this, float dt, float dist, float damage, float
                if(d < dist)
                {
                        e.fireball_impactvec = p;
-                       RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e));
+                       RandomSelection_AddEnt(e, 1 / (1 + d), !Fire_IsBurning(e));
                }
        }
        if(RandomSelection_chosen_ent)
index 9a178c03bbc0a47dd6fd8af8bdeb8be1ebdd96f4..097f2bfdcccdc06fb4df27b6e486d47260a77ab9 100644 (file)
@@ -310,7 +310,7 @@ void W_Hagar_Attack2_Load(Weapon thiswep, entity actor, .entity weaponentity)
 {
        // loadable hagar secondary attack, must always run each frame
 
-       if(time < game_starttime)
+       if(time < game_starttime || PS(actor).m_switchweapon != WEP_HAGAR)
                return;
 
        bool loaded = actor.hagar_load >= WEP_CVAR_SEC(hagar, load_max);
@@ -416,7 +416,7 @@ void W_Hagar_Attack2_Load(Weapon thiswep, entity actor, .entity weaponentity)
 
 void W_Hagar_Attack_Auto(Weapon thiswep, entity actor, .entity weaponentity, int fire)
 {
-       if(!(fire & 1) || actor.hagar_load || actor.hagar_loadblock)
+       if(!(fire & 1) || actor.hagar_load || actor.hagar_loadblock || PS(actor).m_switchweapon != WEP_HAGAR)
        {
                w_ready(thiswep, actor, weaponentity, fire);
                return;
index 23e7c23ae5b2b16ccdd9b918e03ea378cfef60e4..ba7efe6a31a33384e1c1b0cbcb0a535e6ca72b99 100644 (file)
@@ -383,13 +383,16 @@ void Draw_GrapplingHook(entity this)
                        break;
        }
 
-       if((this.owner.sv_entnum == player_localentnum - 1) && autocvar_chase_active <= 0)
+       if((this.owner.sv_entnum == player_localentnum - 1))
        {
                switch(this.HookType)
                {
                        default:
                        case NET_ENT_CLIENT_HOOK:
-                               a = view_origin + view_forward * vs.x + view_right * -vs.y + view_up * vs.z;
+                               if(autocvar_chase_active > 0)
+                                       a = csqcplayer.origin;
+                               else
+                                       a = view_origin + view_forward * vs.x + view_right * -vs.y + view_up * vs.z;
                                b = this.origin;
                                break;
                        case NET_ENT_CLIENT_ARC_BEAM:
index 268e1916edc91d0c9e3468c229946ff6ad7ff166..ffdbfc0d7053e704c88e9152d691ede046aa6d14 100644 (file)
@@ -152,7 +152,7 @@ void W_Seeker_Missile_Think(entity this)
                // Do evasive maneuvers for world objects? ( this should be a cpu hog. :P )
                if(WEP_CVAR(seeker, missile_smart) && (dist > WEP_CVAR(seeker, missile_smart_mindist)))
                {
-                       // Is it a better idea (shorter distance) to trace to the target itthis?
+                       // Is it a better idea (shorter distance) to trace to the target itself?
                        if( vdist(this.origin + olddir * this.wait, <, dist))
                                traceline(this.origin, this.origin + olddir * this.wait, false, this);
                        else
index 546e59f2410099f36f94129c8e2e51fca53409a1..7f1bce0ace2741c05340c025a1f49524ce4969e1 100644 (file)
@@ -419,6 +419,8 @@ NET_HANDLE(tuba_instrument, bool)
 void tuba_instrument_send(entity this, int instr)
 {
        msg_entity = this;
+       if (!IS_REAL_CLIENT(this))
+               return;
        int chan = MSG_ONE;
        WriteHeader(chan, tuba_instrument);
        WriteByte(chan, instr);
index f90afcb529f40f7f2a75bed0e6cf7a0fb043f1e8..f74e9c2d5526c895fd8b28c1bdd9bb7a884faef0 100644 (file)
@@ -4,7 +4,6 @@ void sys_phys_fix(entity this, float dt)
 {
        this.team = myteam + 1; // is this correct?
        PHYS_WATERJUMP_TIME(this) -= dt;
-       this.oldmovement = this.movement;
        this.movement = PHYS_INPUT_MOVEVALUES(this);
        this.items = STAT(ITEMS, this);
        this.spectatorspeed = STAT(SPECTATORSPEED, this);
index c0a47e39b2a4aff558c3c53af50d49694d6c01f7..b25c93b2d3d3177342e8994b12a29b26ecceb7dd 100644 (file)
@@ -62,6 +62,8 @@ void sys_phys_update(entity this, float dt)
                goto end;
        }
 
+       PM_check_slick(this);
+
        if (IS_SVQC && !PHYS_FIXANGLE(this)) { this.angles = '0 1 0' * this.v_angle.y; }
        if (IS_PLAYER(this)) {
                if (IS_ONGROUND(this)) {
@@ -215,7 +217,7 @@ void sys_phys_simulate(entity this, float dt)
        }
        if (this.com_phys_ladder) {
                if (this.viewloc) {
-                       wishvel.z = this.oldmovement.x;
+                       wishvel.z = this.movement_old.x;
                }
                if (this.ladder_entity.classname == "func_water") {
                        float f = vlen(wishvel);
index 7f55a3c10f13b6a62518533321513a2f3fc02196..e4e1d536aa85eb84175ec0e3350d3f14678f86ba 100644 (file)
@@ -275,6 +275,9 @@ NET_HANDLE(ENT_CLIENT_MODEL, bool isnew)
                this.csqcmodel_teleported = 1;
        }
 
+       if(sf & BIT(14))
+               viewloc_SetTags(this);
+
        CSQCModel_InterpolateAnimation_Note(this, sf);
        InterpolateOrigin_Note(this);
        CSQCPlayer_PostUpdate(this);
index 2287d869d0c455bdbf15c77950ac8a5671f20b64..627fec11a92e1293bec76db098230b0a5fafc7f0 100644 (file)
@@ -9,7 +9,7 @@ void RandomSelection_Init()
        RandomSelection_best_priority = -1;
 }
 
-void RandomSelection_Add(entity e, float f, string s, float weight, float priority)
+void RandomSelection_Add(entity e, float f, string s, vector v, float weight, float priority)
 {
        if (priority > RandomSelection_best_priority)
        {
@@ -17,6 +17,7 @@ void RandomSelection_Add(entity e, float f, string s, float weight, float priori
                RandomSelection_chosen_ent = e;
                RandomSelection_chosen_float = f;
                RandomSelection_chosen_string = s;
+               RandomSelection_chosen_vec = v;
                RandomSelection_totalweight = weight;
        }
        else if (priority == RandomSelection_best_priority)
@@ -27,6 +28,7 @@ void RandomSelection_Add(entity e, float f, string s, float weight, float priori
                        RandomSelection_chosen_ent = e;
                        RandomSelection_chosen_float = f;
                        RandomSelection_chosen_string = s;
+                       RandomSelection_chosen_vec = v;
                }
        }
 }
index 1834a97a331164086464ce6ecc87d0527971fb9a..b2fc53f0cac4edaaa3ef964c25b7b6093ac2ae2c 100644 (file)
@@ -5,9 +5,14 @@ float RandomSelection_best_priority;
 entity RandomSelection_chosen_ent;
 float RandomSelection_chosen_float;
 string RandomSelection_chosen_string;
+vector RandomSelection_chosen_vec;
 
 void RandomSelection_Init();
-void RandomSelection_Add(entity e, float f, string s, float weight, float priority);
+void RandomSelection_Add(entity e, float f, string s, vector v, float weight, float priority);
+#define RandomSelection_AddEnt(e, weight, priority) RandomSelection_Add(e, 0, string_null, '0 0 0', weight, priority)
+#define RandomSelection_AddFloat(f, weight, priority) RandomSelection_Add(NULL, f, string_null, '0 0 0', weight, priority)
+#define RandomSelection_AddString(s, weight, priority) RandomSelection_Add(NULL, 0, s, '0 0 0', weight, priority)
+#define RandomSelection_AddVec(v, weight, priority) RandomSelection_Add(NULL, 0, string_null, v, weight, priority)
 
 // prandom - PREDICTABLE random number generator
 
index ae6db507f82b527babf8cb1bd49239b5df812a4b..4e3bc062d1bc78936bc7bb095b6e882f2a5cd380 100644 (file)
@@ -165,6 +165,7 @@ noref bool require_spawnfunc_prefix;
                FIELD_SCALAR(fld, sound1) \
                FIELD_SCALAR(fld, sounds) \
                FIELD_SCALAR(fld, spawnflags) \
+               FIELD_SCALAR(fld, spawnmob) \
                FIELD_SCALAR(fld, speed) \
                FIELD_SCALAR(fld, strength) \
                FIELD_SCALAR(fld, target2) \
index f0aebabc2ee42196281e5ed7db578f0a390d33c8..9e0ea95ebad6dc9555357c310f01a0c9ac9ad793 100644 (file)
 
        void Dialog_close(entity me)
        {
-               if (me.parent.instanceOfNexposee) ExposeeCloseButton_Click(me, me.parent);
-               else if (me.parent.instanceOfModalController) DialogCloseButton_Click(me, me);
+               if (me.parent.instanceOfNexposee)
+               {
+                       ExposeeCloseButton_Click(me, me.parent);
+                       if(me.hideMenuOnClose)
+                       {
+                               me.hideMenuOnClose = false;
+                               m_hide();
+                       }
+               }
+               else if (me.parent.instanceOfModalController)
+                       DialogCloseButton_Click(me, me);
        }
 
        float Dialog_keyDown(entity me, float key, float ascii, float shift)
index 6099fea22d77f28de06cad990d54b597717f45e3..6fa9b26ab38038fe9c271b495c8ff4cbd9a4052e 100644 (file)
@@ -66,6 +66,8 @@ CLASS(Dialog, InputContainer)
        ATTRIB(Dialog, borderLines, float, 1);
        ATTRIB(Dialog, closeButtonImage, string);
 
+       ATTRIB(Dialog, hideMenuOnClose, bool, false);
+
        ATTRIB(Dialog, frame, entity);
 ENDCLASS(Dialog)
 
index aaa33b137b8ecdcd14fc61d86ec85c7a30c0253b..f0e6646ca93d7115063ea9d36018565271229ad3 100644 (file)
@@ -977,6 +977,8 @@ void m_goto(string itemname)
 
                if ((e) && (!e.requiresConnection || (gamestatus & (GAME_ISSERVER | GAME_CONNECTED))))
                {
+                       if(!Menu_Active)
+                               e.hideMenuOnClose = true;
                        m_hide();
                        m_activate_window(e);
                        m_setpointerfocus(e);
index 0ea55f637e86e783f5853f4124b3888f616d12a9..dc28dc9ba62458bf820fd01cce0626b601a3dc33 100644 (file)
@@ -56,7 +56,7 @@ void XonoticGameMessageSettingsTab_fill(entity me)
                        setDependentAND(e, "notification_show_sprees", 1, 1, "notification_show_sprees_info", 1, 3);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBoxEx_T(2, 1, "notification_CHOICE_FRAG", _("Add extra frag information to centerprint when available"), "-"));
-                       makeMulti(e, "notification_CHOICE_FRAGGED notification_CHOICE_TYPEFRAG notification_CHOICE_TYPEFRAGGED");
+                       makeMulti(e, "notification_CHOICE_FRAGGED notification_CHOICE_TYPEFRAG notification_CHOICE_TYPEFRAGGED notification_CHOICE_FRAG_FIRE notification_CHOICE_FRAGGED_FIRE notification_CHOICE_FRAG_FREEZE notification_CHOICE_FRAGGED_FREEZE");
                        e.sendCvars = true;
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "notification_show_location", _("Add frag location to death messages when available"), "-"));
index ede6543e7d983cfed14ee19587da465bd7411b06..8f98df58164e2fbd9933d17492ee6ea2f5ef4c05 100644 (file)
@@ -9,6 +9,8 @@
 #include "mainwindow.qh"
 
 #define ADDVALUE_FPS(i) e.addValue(e, strzone(sprintf(_("%d fps"), i)), #i)
+#define ADDVALUE_SPEED_KB(i) e.addValue(e, strzone(sprintf(_("%d kb/s"), i)), #i)
+#define ADDVALUE_SPEED_MB(i, j) e.addValue(e, strzone(sprintf(_("%d MB/s"), i)), #j)
 entity makeXonoticMiscSettingsTab()
 {
        entity me;
@@ -51,9 +53,16 @@ void XonoticMiscSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticSlider_T(1, 5, 1, "cl_curl_maxdownloads",
                        _("Maximum number of concurrent HTTP/FTP downloads")));
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Speed (kB/s):")));
-               me.TD(me, 1, 2, e = makeXonoticSlider_T(10, 2000, 50, "cl_curl_maxspeed",
-                       _("Maximum download speed")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Download speed:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_curl_maxspeed"));
+               ADDVALUE_SPEED_KB(50);
+               ADDVALUE_SPEED_KB(100);
+               ADDVALUE_SPEED_KB(300);
+               ADDVALUE_SPEED_KB(500);
+               ADDVALUE_SPEED_MB(1, 1000);
+               ADDVALUE_SPEED_MB(2, 2000);
+               e.addValue(e, strzone(_("Unlimited")), "0");
+               e.configureXonoticTextSliderValues(e);
        me.TR(me);
                if(cvar("developer"))
                {
index a1bb5fb958d5da0cdf69d86759fc9b48bfe7de82..c4f77dfad38446d8e11fe91466db06e6d1319ae7 100644 (file)
@@ -92,6 +92,7 @@ float autocvar_g_balance_teams_scorefactor;
 float autocvar_g_ballistics_density_corpse;
 float autocvar_g_ballistics_density_player;
 float autocvar_g_ballistics_mindistance;
+bool autocvar_g_ballistics_penetrate_clips;
 float autocvar_g_ban_default_bantime;
 float autocvar_g_ban_default_masksize;
 float autocvar_g_ban_sync_interval;
@@ -508,6 +509,7 @@ float autocvar_sv_warsowbunny_turnaccel;
 float autocvar_sv_airaccel_sideways_friction;
 float autocvar_sv_aircontrol;
 float autocvar_sv_aircontrol_power;
+float autocvar_sv_aircontrol_backwards;
 float autocvar_sv_aircontrol_penalty;
 float autocvar_sv_warsowbunny_airforwardaccel;
 float autocvar_sv_warsowbunny_topspeed;
index ca12d0d651cf53e9caa39a6afa01bd3528a466f8..bdde55b9aa94683b7ffb0901229203fb1ff59116 100644 (file)
@@ -177,7 +177,7 @@ void bot_setnameandstuff(entity this)
                                        break;
                                }
                        ));
-                       RandomSelection_Add(NULL, 0, readfile, 1, prio);
+                       RandomSelection_AddString(readfile, 1, prio);
                }
                readfile = RandomSelection_chosen_string;
                fclose(file);
index dcf18ef19b1f3622a1eb12590ec66d937d51add9..677ef578e79bd6984a43dbb72c02736b9389e463 100644 (file)
@@ -156,7 +156,7 @@ void havocbot_goalrating_enemyplayers(entity this, float ratingscale, vector org
                                continue;
                }
 
-               // TODO: rate waypoints near the targetted player at that moment, instead of the player itthis
+               // TODO: rate waypoints near the targeted player at that moment, instead of the player itself
                //               adding a player as a goal seems to be quite dangerous, especially on space maps
                //               remove hack in navigation_poptouchedgoals() after performing this change
 
index 0c563d1ff9e2f1953775caa14b437171fe74c480..17f61af141ff7c8b08a3d736011ae9a77043c705 100644 (file)
@@ -908,7 +908,7 @@ void navigation_poptouchedgoals(entity this)
        }
 
        // HACK: remove players/bots as goals, they can lead a bot to unexpected places (cliffs, lava, etc)
-       // TODO: rate waypoints near the targetted player at that moment, instead of the player itthis
+       // TODO: rate waypoints near the targetted player at that moment, instead of the player itself
        if(IS_PLAYER(this.goalcurrent))
                navigation_poproute(this);
 
index e8355575edae23ef274bd8ddeb089068a2dc664a..9f29a22176264e9e507c24da84854fd67e90c486 100644 (file)
@@ -1106,7 +1106,6 @@ void bot_setcurrentcommand(entity this)
        if(!this.bot_cmd_current)
        {
                this.bot_cmd_current = new_pure(bot_cmd);
-               this.bot_cmd_current.is_bot_cmd = true;
        }
 
        bot_cmd = this.bot_cmd_current;
index cb6cd8731daab16ad2d43147a5c64ad0f5f3f71e..b3f0e90fa38d3129b9d94a94e8381967fe4178af 100644 (file)
@@ -59,7 +59,6 @@ string bot_cmd_string[BOT_CMD_COUNTER];
 entity bot_cmd;        // global current command
 .entity bot_cmd_current; // current command of this bot
 
-.float is_bot_cmd;                     // Tells if the entity is a bot command
 .float bot_cmd_index;                  // Position of the command in the queue
 .int bot_cmd_type;                     // If of command (see the BOT_CMD_* defines)
 .float bot_cmd_parm_float;             // Field to store a float parameter
index 9f763a886d73217cd4490aa05fba9f75a2add448..cf8a4569b30549598c800adf29d8a720d2cdb6e0 100644 (file)
@@ -164,7 +164,7 @@ float CheatImpulse(entity this, int imp)
                        this.personal.strength_finished = this.strength_finished;
                        this.personal.invincible_finished = this.invincible_finished;
                        this.personal.teleport_time = time;
-                       break; // this part itthis doesn't cheat, so let's not count this
+                       break; // this part itself doesn't cheat, so let's not count this
                case CHIMPULSE_CLONE_MOVING.impulse:
                        IS_CHEAT(this, imp, 0, 0);
                        makevectors (this.v_angle);
@@ -262,7 +262,7 @@ float CheatImpulse(entity this, int imp)
                case CHIMPULSE_R00T.impulse:
                        IS_CHEAT(this, imp, 0, 0);
                        RandomSelection_Init();
-                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), LAMBDA(RandomSelection_Add(it, 0, string_null, 1, 1)));
+                       FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it) && DIFF_TEAM(it, this), LAMBDA(RandomSelection_AddEnt(it, 1, 1)));
                        if(RandomSelection_chosen_ent)
                                e = RandomSelection_chosen_ent;
                        else
@@ -475,9 +475,9 @@ float CheatCommand(entity this, int argc)
                        RandomSelection_Init();
                        crosshair_trace(this);
                        for(entity e = NULL; (e = find(e, classname, "dragbox_box")); )
-                               RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                               RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                        for(entity e = NULL; (e = find(e, classname, "dragpoint")); )
-                               RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                               RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                        if(RandomSelection_chosen_ent)
                        {
                                delete(RandomSelection_chosen_ent.killindicator.killindicator);
@@ -497,9 +497,9 @@ float CheatCommand(entity this, int argc)
                                RandomSelection_Init();
                                crosshair_trace(this);
                                for(entity e = NULL; (e = find(e, classname, "dragbox_box")); )
-                                       RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                                       RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                                for(entity e = NULL; (e = find(e, classname, "dragpoint")); )
-                                       RandomSelection_Add(e, 0, string_null, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
+                                       RandomSelection_AddEnt(e, 1, 1 / vlen(e.origin + (e.mins + e.maxs) * 0.5 - trace_endpos));
                                if(RandomSelection_chosen_ent)
                                {
                                        if(substring(argv(1), 0, 1) == "*")
index dd9aab7fabc0c55c29c85680c2e32cc24f9ee434..554ef656b41dd15774f8966e004d600e1b3e13a3 100644 (file)
@@ -625,9 +625,11 @@ void PutClientInServer(entity this)
                FixPlayermodel(this);
                this.drawonlytoclient = NULL;
 
+               this.viewloc = NULL;
+
                this.crouch = false;
-               this.view_ofs = STAT(PL_VIEW_OFS, NULL);
-               setsize(this, STAT(PL_MIN, NULL), STAT(PL_MAX, NULL));
+               this.view_ofs = STAT(PL_VIEW_OFS, this);
+               setsize(this, STAT(PL_MIN, this), STAT(PL_MAX, this));
                this.spawnorigin = spot.origin;
                setorigin(this, spot.origin + '0 0 1' * (1 - this.mins.z - 24));
                // don't reset back to last position, even if new position is stuck in solid
@@ -706,7 +708,6 @@ void PutClientInServer(entity this)
 
 void ClientInit_misc(entity this);
 
-.float ebouncefactor, ebouncestop; // electro's values
 // TODO do we need all these fields, or should we stop autodetecting runtime
 // changes and just have a console command to update this?
 bool ClientInit_SendEntity(entity this, entity to, int sf)
@@ -1208,6 +1209,9 @@ void ClientConnect(entity this)
        if (IS_REAL_CLIENT(this))
                sv_notice_join(this);
 
+       // update physics stats (players can spawn before physics runs)
+       Physics_UpdateStats(this, PHYS_HIGHSPEED(this));
+
        IL_EACH(g_initforplayer, it.init_for_player, {
                it.init_for_player(it, this);
        });
@@ -1607,7 +1611,7 @@ void SetZoomState(entity this, float z)
 void GetPressedKeys(entity this)
 {
        MUTATOR_CALLHOOK(GetPressedKeys, this);
-       int keys = this.pressedkeys;
+       int keys = STAT(PRESSED_KEYS, this);
        keys = BITSET(keys, KEY_FORWARD,        this.movement.x > 0);
        keys = BITSET(keys, KEY_BACKWARD,       this.movement.x < 0);
        keys = BITSET(keys, KEY_RIGHT,          this.movement.y > 0);
@@ -1617,7 +1621,9 @@ void GetPressedKeys(entity this)
        keys = BITSET(keys, KEY_CROUCH,         PHYS_INPUT_BUTTON_CROUCH(this));
        keys = BITSET(keys, KEY_ATCK,           PHYS_INPUT_BUTTON_ATCK(this));
        keys = BITSET(keys, KEY_ATCK2,          PHYS_INPUT_BUTTON_ATCK2(this));
-       this.pressedkeys = keys;
+       this.pressedkeys = keys; // store for other users
+
+       STAT(PRESSED_KEYS, this) = keys;
 }
 
 /*
@@ -1650,7 +1656,7 @@ void SpectateCopy(entity this, entity spectatee)
        this.hit_time = spectatee.hit_time;
        this.strength_finished = spectatee.strength_finished;
        this.invincible_finished = spectatee.invincible_finished;
-       this.pressedkeys = spectatee.pressedkeys;
+       STAT(PRESSED_KEYS, this) = STAT(PRESSED_KEYS, spectatee);
        this.weapons = spectatee.weapons;
        this.vortex_charge = spectatee.vortex_charge;
        this.vortex_chargepool_ammo = spectatee.vortex_chargepool_ammo;
@@ -1667,6 +1673,7 @@ void SpectateCopy(entity this, entity spectatee)
        this.angles = spectatee.v_angle;
        STAT(FROZEN, this) = STAT(FROZEN, spectatee);
        this.revive_progress = spectatee.revive_progress;
+       this.viewloc = spectatee.viewloc;
        if(!PHYS_INPUT_BUTTON_USE(this) && STAT(CAMERA_SPECTATOR, this) != 2)
                this.fixangle = true;
        setorigin(this, spectatee.origin);
@@ -2333,7 +2340,7 @@ void PlayerPreThink (entity this)
                                        {
                                                if ((this.respawn_flags & RESPAWN_FORCE) && !(this.respawn_time < this.respawn_time_max))
                                                        this.deadflag = DEAD_RESPAWNING;
-                                               else if (!button_pressed || (this.respawn_flags & RESPAWN_FORCE))
+                                               else if (!button_pressed || (time >= this.respawn_time_max && (this.respawn_flags & RESPAWN_FORCE)))
                                                        this.deadflag = DEAD_DEAD;
                                                break;
                                        }
index 35418a02f07d420a9e0805f341a73cbaa6632ca5..5b01f134942729fe68f746328195d4c8d70665ae 100644 (file)
@@ -210,6 +210,7 @@ void timeout_handler_think(entity this)
                        }
                        else  // time to end the timeout
                        {
+                               Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_TIMEIN);
                                timeout_status = TIMEOUT_INACTIVE;
 
                                // reset the slowmo value back to normal
@@ -380,17 +381,17 @@ void CommonCommand_editmob(int request, entity caller, int argc)
                                        if (tmp_moncount >= autocvar_g_monsters_max_perplayer) { print_to(caller, "You can't spawn any more monsters"); return; }
 
                                        bool found = false;
-                                       for (int i = MON_FIRST; i <= MON_LAST; ++i)
+                                       FOREACH(Monsters, it != MON_Null && it.netname == arg_lower,
                                        {
-                                               mon = get_monsterinfo(i);
-                                               if (mon.netname == arg_lower) { found = true; break; }
-                                       }
+                                               found = true;
+                                               break;
+                                       });
 
                                        if (!found && arg_lower != "random") { print_to(caller, "Invalid monster"); return; }
 
                                        totalspawned += 1;
                                        WarpZone_TraceBox(CENTER_OR_VIEWOFS(caller), caller.mins, caller.maxs, CENTER_OR_VIEWOFS(caller) + v_forward * 150, true, caller);
-                                       mon = spawnmonster(arg_lower, 0, caller, caller, trace_endpos, false, false, moveflag);
+                                       mon = spawnmonster(spawn(), arg_lower, 0, caller, caller, trace_endpos, false, false, moveflag);
                                        print_to(caller, strcat("Spawned ", mon.monster_name));
                                        return;
                                }
index b034968901e741e40d348952fdf7ef40ab16f9d9..4574b23490f3147447772eb754d41f1b6a750d08 100644 (file)
@@ -160,7 +160,6 @@ bool nJoinAllowed(entity this, entity ignore);
 .float noalign;                // if set to 1, the item or spawnpoint won't be dropped to the floor
 
 .vector death_origin;
-.vector killer_origin;
 
 float default_player_alpha;
 float default_weapon_alpha;
@@ -261,7 +260,7 @@ bool independent_players;
 
 string clientstuff;
 .float phase;
-.int pressedkeys = _STAT(PRESSED_KEYS);
+.int pressedkeys;
 
 .string fog;
 
@@ -418,12 +417,6 @@ const int MIF_GUIDED_CONFUSABLE = MIF_GUIDED_HEAT | MIF_GUIDED_AI;
 
 ////
 
-.entity player_stats;
-//.float playerid;
-.string playernick;
-.float elos;
-.float ranks;
-
 .string cvar_cl_physics;
 
 .void(entity this, entity player) init_for_player;
index 3e448363655f6ce712a84efb3af74f3202a68db1..a604a2bade1ef61b8ac45bb1eeac7d068ed3b406 100644 (file)
@@ -264,6 +264,18 @@ float Obituary_WeaponDeath(
        return false;
 }
 
+bool frag_centermessage_override(entity attacker, entity targ, int deathtype, int kill_count_to_attacker, int kill_count_to_target)
+{
+       if(deathtype == DEATH_FIRE.m_id)
+       {
+               Send_Notification(NOTIF_ONE, attacker, MSG_CHOICE, CHOICE_FRAG_FIRE, targ.netname, kill_count_to_attacker, (IS_BOT_CLIENT(targ) ? -1 : targ.ping));
+               Send_Notification(NOTIF_ONE, targ, MSG_CHOICE, CHOICE_FRAGGED_FIRE, attacker.netname, kill_count_to_target, attacker.health, attacker.armorvalue, (IS_BOT_CLIENT(attacker) ? -1 : attacker.ping));
+               return true;
+       }
+
+       return MUTATOR_CALLHOOK(FragCenterMessage, attacker, targ, deathtype, kill_count_to_attacker, kill_count_to_target);
+}
+
 .int buffs = _STAT(BUFFS); // TODO: remove
 entity buff_FirstFromFlags(int _buffs);
 void Obituary(entity attacker, entity inflictor, entity targ, int deathtype)
@@ -277,7 +289,6 @@ void Obituary(entity attacker, entity inflictor, entity targ, int deathtype)
 
        // Set final information for the death
        targ.death_origin = targ.origin;
-       if(targ != attacker) { targ.killer_origin = attacker.origin; }
        string deathlocation = (autocvar_notification_server_allows_location ? NearestLocation(targ.death_origin) : "");
 
        #ifdef NOTIFICATIONS_DEBUG
@@ -413,7 +424,7 @@ void Obituary(entity attacker, entity inflictor, entity targ, int deathtype)
                                        (IS_BOT_CLIENT(attacker) ? -1 : attacker.ping)
                                );
                        }
-                       else
+                       else if(!frag_centermessage_override(attacker, targ, deathtype, kill_count_to_attacker, kill_count_to_target))
                        {
                                Send_Notification(
                                        NOTIF_ONE,
@@ -560,7 +571,10 @@ void Unfreeze (entity targ)
                return;
 
        if(STAT(FROZEN, targ) && STAT(FROZEN, targ) != 3) // only reset health if target was frozen
+       {
                targ.health = ((IS_PLAYER(targ)) ? start_health : targ.max_health);
+               targ.pauseregen_finished = time + autocvar_g_balance_pause_health_regen;
+       }
 
        STAT(FROZEN, targ) = 0;
        targ.revive_progress = 0;
index 348f307270d84b52c2ab9a6486318a948a81fdaa..58fb26a4ed4a0acd1ed272252e3dbeac39bf7257 100644 (file)
@@ -152,11 +152,11 @@ bool g_clientmodel_genericsendentity(entity this, entity to, int sf)
                        WriteCoord(MSG_ENTITY, this.movedir.z);
                        WriteByte(MSG_ENTITY, floor(this.lip * 255));
                }
-               WriteShort(MSG_ENTITY, this.fade_start);
-               WriteShort(MSG_ENTITY, this.fade_end);
-               WriteShort(MSG_ENTITY, this.alpha_max);
-               WriteShort(MSG_ENTITY, this.alpha_min);
-               WriteShort(MSG_ENTITY, this.inactive);
+               WriteByte(MSG_ENTITY, this.fade_start);
+               WriteByte(MSG_ENTITY, this.fade_end);
+               WriteByte(MSG_ENTITY, this.alpha_max);
+               WriteByte(MSG_ENTITY, this.alpha_min);
+               WriteByte(MSG_ENTITY, this.inactive);
                WriteShort(MSG_ENTITY, this.fade_vertical_offset);
        }
 
index fe7822bc161549c5ab9f45a93eb5b61d6df24aad..48b587e5eb2de33312210f0eb139a3587cc6bc94 100644 (file)
@@ -320,17 +320,20 @@ void cvar_changes_init()
                BADCVAR("g_invasion_point_limit");
                BADCVAR("g_keyhunt_point_leadlimit");
                BADCVAR("g_nexball_goalleadlimit");
+               BADCVAR("g_new_toys_use_pickupsound");
+               BADCVAR("g_physics_predictall");
+               BADCVAR("g_piggyback");
                BADCVAR("g_tdm_point_leadlimit");
                BADCVAR("g_tdm_point_limit");
                BADCVAR("leadlimit_and_fraglimit");
                BADCVAR("leadlimit_override");
                BADCVAR("pausable");
-               BADCVAR("sv_allow_fullbright");
                BADCVAR("sv_checkforpacketsduringsleep");
                BADCVAR("sv_intermission_cdtrack");
                BADCVAR("sv_minigames");
                BADCVAR("sv_namechangetimer");
                BADCVAR("sv_precacheplayermodels");
+               BADCVAR("sv_stepheight");
                BADCVAR("sv_timeout");
                BADPREFIX("crypto_");
                BADPREFIX("gameversion_");
@@ -342,9 +345,11 @@ void cvar_changes_init()
                BADPREFIX("net_");
                BADPREFIX("prvm_");
                BADPREFIX("skill_");
+               BADPREFIX("sv_allow_");
                BADPREFIX("sv_cullentities_");
                BADPREFIX("sv_maxidle_");
                BADPREFIX("sv_minigames_");
+               BADPREFIX("sv_radio_");
                BADPREFIX("sv_timeout_");
                BADPREFIX("sv_vote_");
                BADPREFIX("timelimit_");
@@ -369,6 +374,7 @@ void cvar_changes_init()
                BADCVAR("g_balance_teams_scorefactor");
                BADCVAR("g_ban_sync_trusted_servers");
                BADCVAR("g_ban_sync_uri");
+               BADCVAR("g_buffs");
                BADCVAR("g_ca_teams_override");
                BADCVAR("g_ctf_ignore_frags");
                BADCVAR("g_domination_point_limit");
@@ -391,6 +397,8 @@ void cvar_changes_init()
                BADCVAR("g_maxplayers");
                BADCVAR("g_mirrordamage");
                BADCVAR("g_nexball_goallimit");
+               BADCVAR("g_norecoil");
+               BADCVAR("g_physics_clientselect");
                BADCVAR("g_powerups");
                BADCVAR("g_spawnshieldtime");
                BADCVAR("g_start_delay");
@@ -443,6 +451,7 @@ void cvar_changes_init()
                BADCVAR("g_grappling_hook");
                BADCVAR("g_jetpack");
 
+#undef BADPRESUFFIX
 #undef BADPREFIX
 #undef BADCVAR
 
@@ -908,7 +917,8 @@ spawnfunc(worldspawn)
        if(cvar_string("g_mod_config") != cvar_defstring("g_mod_config"))
                modname = cvar_string("g_mod_config");
        // extra mutators that deserve to count as mod
-       MUTATOR_CALLHOOK(SetModname);
+       MUTATOR_CALLHOOK(SetModname, modname);
+       modname = M_ARGV(0, string);
 
        // save it for later
        modname = strzone(modname);
@@ -1503,7 +1513,7 @@ void FixIntermissionClient(entity e)
                        stuffcmd(e, "\nscr_printspeed 1000000\n");
                        RandomSelection_Init();
                        FOREACH_WORD(autocvar_sv_intermission_cdtrack, true, LAMBDA(
-                               RandomSelection_Add(NULL, 0, it, 1, 1);
+                               RandomSelection_AddString(it, 1, 1);
                        ));
                        if (RandomSelection_chosen_string != "")
                        {
index 9a1ed5c040fd6e8d55cc0c44df8204a1dbc78936..7c7c02018c2afb1f664cab59800734bdca75606b 100644 (file)
@@ -14,7 +14,6 @@
 float mapvote_nextthink;
 float mapvote_keeptwotime;
 float mapvote_timeout;
-string mapvote_message;
 const float MAPVOTE_SCREENSHOT_DIRS_COUNT = 4;
 string mapvote_screenshot_dirs[MAPVOTE_SCREENSHOT_DIRS_COUNT];
 float mapvote_screenshot_dirs_count;
@@ -255,7 +254,6 @@ void MapVote_Init()
        mapvote_timeout = time + autocvar_g_maplist_votable_timeout;
        if(mapvote_count_real < 3 || mapvote_keeptwotime <= time)
                mapvote_keeptwotime = 0;
-       mapvote_message = "Choose a map and press its key!";
 
        MapVote_Spawn();
 }
@@ -524,7 +522,7 @@ float MapVote_CheckRules_2()
        for(i = 0; i < mapvote_count_real; ++i)
                if ( mapvote_maps_flags[i] & GTV_AVAILABLE )
                {
-                       RandomSelection_Add(NULL, i, string_null, 1, mapvote_selections[i]);
+                       RandomSelection_AddFloat(i, 1, mapvote_selections[i]);
                        if ( gametypevote &&  mapvote_maps[i] == MapInfo_Type_ToString(MapInfo_CurrentGametype()) )
                        {
                                currentVotes = mapvote_selections[i];
@@ -544,7 +542,7 @@ float MapVote_CheckRules_2()
        for(i = 0; i < mapvote_count_real; ++i)
                if(i != firstPlace)
                if ( mapvote_maps_flags[i] & GTV_AVAILABLE )
-                       RandomSelection_Add(NULL, i, string_null, 1, mapvote_selections[i]);
+                       RandomSelection_AddFloat(i, 1, mapvote_selections[i]);
        secondPlace = RandomSelection_chosen_float;
        secondPlaceVotes = RandomSelection_best_priority;
        //dprint("Second place: ", ftos(secondPlace), "\n");
@@ -561,7 +559,6 @@ float MapVote_CheckRules_2()
                {
                        float didntvote;
                        MapVote_TouchMask();
-                       mapvote_message = "Now decide between the TOP TWO!";
                        mapvote_keeptwotime = 0;
                        result = strcat(":vote:keeptwo:", mapvote_maps[firstPlace]);
                        result = strcat(result, ":", ftos(firstPlaceVotes));
@@ -592,10 +589,8 @@ float MapVote_CheckRules_2()
 
 void MapVote_Tick()
 {
-       float keeptwo;
        float totalvotes;
 
-       keeptwo = mapvote_keeptwotime;
        MapVote_CheckRules_1(); // count
        if(MapVote_CheckRules_2()) // decide
                return;
index 88151a54640a897af32ee8db71697401f789c821..88d731e815d155d46e407d1f0a31f9c48179ab1f 100644 (file)
@@ -63,6 +63,16 @@ MUTATOR_HOOKABLE(ClientDisconnect, EV_ClientDisconnect);
     /**/
 MUTATOR_HOOKABLE(PlayerDies, EV_PlayerDies);
 
+/** allows overriding the frag centerprint messages */
+#define EV_FragCenterMessage(i, o) \
+    /** attacker       */ i(entity, MUTATOR_ARGV_0_entity) \
+    /** target         */ i(entity, MUTATOR_ARGV_1_entity) \
+    /** deathtype      */ i(float, MUTATOR_ARGV_2_float) \
+    /** attacker kcount*/ i(int,  MUTATOR_ARGV_3_int) \
+    /** targ killcount */ i(int,  MUTATOR_ARGV_4_int) \
+    /**/
+MUTATOR_HOOKABLE(FragCenterMessage, EV_FragCenterMessage);
+
 /** called when a player dies to e.g. remove stuff he was carrying */
 #define EV_PlayHitsound(i, o) \
     /** victim */ i(entity, MUTATOR_ARGV_0_entity) \
@@ -98,14 +108,14 @@ MUTATOR_HOOKABLE(GiveFragsForKill, EV_GiveFragsForKill);
 /** called when the match ends */
 MUTATOR_HOOKABLE(MatchEnd, EV_NO_ARGS);
 
-/** should adjust number to contain the team count */
-#define EV_GetTeamCount(i, o) \
-    /** number of teams    */ i(float, MUTATOR_ARGV_0_float) \
+/** allows adjusting allowed teams */
+#define EV_CheckAllowedTeams(i, o) \
+    /** mask of teams      */ i(float, MUTATOR_ARGV_0_float) \
     /**/                      o(float, MUTATOR_ARGV_0_float) \
     /** team entity name   */ i(string, MUTATOR_ARGV_1_string) \
     /**/                      o(string, MUTATOR_ARGV_1_string) \
     /**/
-MUTATOR_HOOKABLE(GetTeamCount, EV_GetTeamCount);
+MUTATOR_HOOKABLE(CheckAllowedTeams, EV_CheckAllowedTeams);
 
 /** copies variables for spectating "spectatee" to "this" */
 #define EV_SpectateCopy(i, o) \
@@ -470,6 +480,7 @@ MUTATOR_HOOKABLE(SV_StartFrame, EV_NO_ARGS);
 
 #define EV_SetModname(i, o) \
     /** name of the mutator/mod if it warrants showing as such in the server browser */ \
+    /**/ i(string, MUTATOR_ARGV_0_string) \
     /**/ o(string, MUTATOR_ARGV_0_string) \
     /**/
 MUTATOR_HOOKABLE(SetModname, EV_SetModname);
@@ -529,12 +540,12 @@ MUTATOR_HOOKABLE(HelpMePing, EV_HelpMePing);
 
 /**
  * called when a vehicle initializes
- * return true to remove the vehicle
+ * return false to remove the vehicle
  */
-#define EV_VehicleSpawn(i, o) \
+#define EV_VehicleInit(i, o) \
     /** vehicle */ i(entity, MUTATOR_ARGV_0_entity) \
     /**/
-MUTATOR_HOOKABLE(VehicleSpawn, EV_VehicleSpawn);
+MUTATOR_HOOKABLE(VehicleInit, EV_VehicleInit);
 
 /**
  * called when a player enters a vehicle
index f4566a9ca667b305a759e05fcf96edf9dc7c6e4c..b032ab01949db9c6453da64da4d96058e9a926ce 100644 (file)
@@ -185,15 +185,6 @@ void assault_new_round(entity this)
 {
        //bprint("ASSAULT: new round\n");
 
-       // Eject players from vehicles
-    FOREACH_CLIENT(IS_PLAYER(it) && it.vehicle, vehicles_exit(it.vehicle, VHEF_RELEASE));
-
-    IL_EACH(g_vehicles, true,
-    {
-        vehicles_clearreturn(it);
-        vehicles_spawn(it);
-    });
-
        // up round counter
        this.winning = this.winning + 1;
 
@@ -540,11 +531,13 @@ MUTATOR_HOOKFUNCTION(as, TurretSpawn)
                turret.team = 5; // this gets reversed when match starts?
 }
 
-MUTATOR_HOOKFUNCTION(as, VehicleSpawn)
+MUTATOR_HOOKFUNCTION(as, VehicleInit)
 {
        entity veh = M_ARGV(0, entity);
 
-       veh.nextthink = time + 0.5;
+       if(veh.active != ACTIVE_NOT)
+               veh.nextthink = time + 0.5;
+       return true;
 }
 
 MUTATOR_HOOKFUNCTION(as, HavocBot_ChooseRole)
@@ -562,7 +555,7 @@ MUTATOR_HOOKFUNCTION(as, PlayHitsound)
        return (frag_victim.classname == "func_assault_destructible");
 }
 
-MUTATOR_HOOKFUNCTION(as, GetTeamCount)
+MUTATOR_HOOKFUNCTION(as, CheckAllowedTeams)
 {
        // assault always has 2 teams
        c1 = c2 = 0;
index 43c5100cbca59b949ceaa02ade21107a6aef9898..8fd40748543bbcdf5a708845720791f6e6ac5f37 100644 (file)
@@ -49,7 +49,6 @@ const int HAVOCBOT_AST_ROLE_OFFENSE = 4;
 
 void(entity this) havocbot_role_ast_defense;
 void(entity this) havocbot_role_ast_offense;
-.entity havocbot_ast_target;
 
 void(entity bot) havocbot_ast_reset_role;
 
index 84f668bab5f9954db2cb331a8adef632fa894746..ebfcd9540282d99f853c94cbb6c0f5d94ca75d04 100644 (file)
@@ -226,7 +226,7 @@ MUTATOR_HOOKFUNCTION(ca, reset_map_global)
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(ca, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(ca, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(0, float) = ca_teams;
 }
index 56ee04d5dafe61135f3c2acc1fb6b6bed70fd5ac..0a3c622a9b0a3575f2d73c570e2866505362ec60 100644 (file)
@@ -2369,7 +2369,7 @@ MUTATOR_HOOKFUNCTION(ctf, HavocBot_ChooseRole)
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(ctf, GetTeamCount)
+MUTATOR_HOOKFUNCTION(ctf, CheckAllowedTeams)
 {
        //M_ARGV(0, float) = ctf_teams;
        M_ARGV(1, string) = "ctf_team";
index 4cd8e8767e5f163b58efd886f7e320c8dd66cd71..f83eb6b649a577568d1e796f6e1bafdca54088d9 100644 (file)
@@ -35,13 +35,13 @@ void cts_ScoreRules()
        ScoreRules_basics(0, 0, 0, false);
        if(g_race_qualifying)
        {
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
        }
        else
        {
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_TIME,    "time",      SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
-               ScoreInfo_SetLabel_PlayerScore(SP_CTS_FASTEST, "fastest",   SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_TIME,    "time",      SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+               ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_LOWER_IS_BETTER | SFL_TIME);
        }
        ScoreRules_basics_end();
 }
index abcae5ada5dffb2db2381386b8a9d0a23627d5b4..eb94e4f263f75a57b21b0e0a1cb8b5b52d197fd5 100644 (file)
@@ -411,7 +411,7 @@ void havocbot_role_dom(entity this)
        }
 }
 
-MUTATOR_HOOKFUNCTION(dom, GetTeamCount)
+MUTATOR_HOOKFUNCTION(dom, CheckAllowedTeams)
 {
        // fallback?
        M_ARGV(0, float) = domination_teams;
index cd7372699004bd93fe18e482e69d552e5b24f27d..32c91d8c17d20fb6f6e9fdaeb4eb9b0f0e31ec98 100644 (file)
@@ -378,10 +378,6 @@ MUTATOR_HOOKFUNCTION(ft, PlayerDies)
        }
        else
        {
-               if(IS_PLAYER(frag_target))
-                       Send_Notification(NOTIF_ONE, frag_target, MSG_CENTER, CENTER_FREEZETAG_FROZEN, frag_attacker.netname);
-               if(IS_PLAYER(frag_attacker))
-                       Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_FREEZETAG_FREEZE, frag_target.netname);
                Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_FREEZETAG_FREEZE, frag_target.netname, frag_attacker.netname);
        }
 
@@ -436,22 +432,13 @@ MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST)
        if(gameover)
                return true;
 
-       entity player = M_ARGV(0, entity);
-
-       if(STAT(FROZEN, player) == 1)
-       {
-               // keep health = 1
-               player.pauseregen_finished = time + autocvar_g_balance_pause_health_regen;
-       }
-
        if(round_handler_IsActive())
        if(!round_handler_IsRoundStarted())
                return true;
 
        int n;
-
-       entity o;
-       o = NULL;
+       entity o = NULL;
+       entity player = M_ARGV(0, entity);
        //if(STAT(FROZEN, player))
        //if(player.freezetag_frozen_timeout > 0 && time < player.freezetag_frozen_timeout)
                //player.iceblock.alpha = ICE_MIN_ALPHA + (ICE_MAX_ALPHA - ICE_MIN_ALPHA) * (player.freezetag_frozen_timeout - time) / (player.freezetag_frozen_timeout - player.freezetag_frozen_time);
@@ -553,7 +540,7 @@ MUTATOR_HOOKFUNCTION(ft, HavocBot_ChooseRole)
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(ft, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(ft, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(0, float) = freezetag_teams;
 }
@@ -565,6 +552,23 @@ MUTATOR_HOOKFUNCTION(ft, SetWeaponArena)
                M_ARGV(0, string) = "most";
 }
 
+MUTATOR_HOOKFUNCTION(ft, FragCenterMessage)
+{
+       entity frag_attacker = M_ARGV(0, entity);
+       entity frag_target = M_ARGV(1, entity);
+       //float frag_deathtype = M_ARGV(2, float);
+       int kill_count_to_attacker = M_ARGV(3, int);
+       int kill_count_to_target = M_ARGV(4, int);
+
+       if(STAT(FROZEN, frag_target))
+               return; // target was already frozen, so this is just pushing them off the cliff
+
+       Send_Notification(NOTIF_ONE, frag_attacker, MSG_CHOICE, CHOICE_FRAG_FREEZE, frag_target.netname, kill_count_to_attacker, (IS_BOT_CLIENT(frag_target) ? -1 : frag_target.ping));
+       Send_Notification(NOTIF_ONE, frag_target, MSG_CHOICE, CHOICE_FRAGGED_FREEZE, frag_attacker.netname, kill_count_to_target, frag_attacker.health, frag_attacker.armorvalue, (IS_BOT_CLIENT(frag_attacker) ? -1 : frag_attacker.ping));
+
+       return true;
+}
+
 void freezetag_Initialize()
 {
        freezetag_teams = autocvar_g_freezetag_teams_override;
index 2a1b35956b0bce2b42d6b6156629acf93c751683..efed23a5df41f48dd0897ffb72c8434412f1cb47 100644 (file)
@@ -15,6 +15,8 @@ int autocvar_g_invasion_monster_count;
 bool autocvar_g_invasion_zombies_only;
 float autocvar_g_invasion_spawn_delay;
 
+.string spawnmob;
+
 spawnfunc(invasion_spawnpoint)
 {
        if(!g_invasion) { delete(this); return; }
@@ -23,27 +25,30 @@ spawnfunc(invasion_spawnpoint)
        IL_PUSH(g_invasion_spawns, this);
 
        if(autocvar_g_invasion_zombies_only) // precache only if it hasn't been already
-       if(this.monsterid) {
-               Monster mon = get_monsterinfo(this.monsterid);
-               mon.mr_precache(mon);
+       if(this.spawnmob)
+       {
+               FOREACH(Monsters, it.netname == this.spawnmob,
+               {
+                       it.mr_precache(it);
+               });
        }
 }
 
-int invasion_PickMonster(int supermonster_count)
+Monster invasion_PickMonster(int supermonster_count)
 {
        if(autocvar_g_invasion_zombies_only)
-               return MON_ZOMBIE.monsterid;
+               return MON_ZOMBIE;
 
        RandomSelection_Init();
 
        FOREACH(Monsters, it != MON_Null,
        {
-               if((it.spawnflags & MONSTER_TYPE_FLY) || (it.spawnflags & MONSTER_TYPE_SWIM) || (it.spawnflags & MONSTER_SIZE_QUAKE) || ((it.spawnflags & MON_FLAG_SUPERMONSTER) && supermonster_count >= 1))
+               if((it.spawnflags & MONSTER_TYPE_PASSIVE) || (it.spawnflags & MONSTER_TYPE_FLY) || (it.spawnflags & MONSTER_TYPE_SWIM) || (it.spawnflags & MONSTER_SIZE_QUAKE) || ((it.spawnflags & MON_FLAG_SUPERMONSTER) && supermonster_count >= 1))
                        continue;
-        RandomSelection_Add(NULL, it.monsterid, string_null, 1, 1);
+        RandomSelection_AddEnt(it, 1, 1);
        });
 
-       return RandomSelection_chosen_float;
+       return RandomSelection_chosen_ent;
 }
 
 entity invasion_PickSpawn()
@@ -52,14 +57,14 @@ entity invasion_PickSpawn()
 
        IL_EACH(g_invasion_spawns, true,
        {
-               RandomSelection_Add(it, 0, string_null, 1, ((time >= it.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating
+               RandomSelection_AddEnt(it, 1, ((time >= it.spawnshieldtime) ? 0.2 : 1)); // give recently used spawnpoints a very low rating
                it.spawnshieldtime = time + autocvar_g_invasion_spawnpoint_spawn_delay;
        });
 
        return RandomSelection_chosen_ent;
 }
 
-void invasion_SpawnChosenMonster(float mon)
+void invasion_SpawnChosenMonster(Monster mon)
 {
        entity spawn_point, monster;
 
@@ -69,17 +74,14 @@ void invasion_SpawnChosenMonster(float mon)
        {
                LOG_TRACE("Warning: couldn't find any invasion_spawnpoint spawnpoints, attempting to spawn monsters in random locations");
                entity e = spawn();
-               setsize(e, (get_monsterinfo(mon)).mins, (get_monsterinfo(mon)).maxs);
+               setsize(e, mon.mins, mon.maxs);
 
                if(MoveToRandomMapLocation(e, DPCONTENTS_SOLID | DPCONTENTS_CORPSE | DPCONTENTS_PLAYERCLIP, DPCONTENTS_SLIME | DPCONTENTS_LAVA | DPCONTENTS_SKY | DPCONTENTS_BODY | DPCONTENTS_DONOTENTER, Q3SURFACEFLAG_SKY, 10, 1024, 256))
-                       monster = spawnmonster("", mon, NULL, NULL, e.origin, false, false, 2);
+                       monster = spawnmonster(e, "", mon.m_id, NULL, NULL, e.origin, false, false, 2);
                else return;
-
-               setthink(e, SUB_Remove);
-               e.nextthink = time + 0.1;
        }
-       else
-               monster = spawnmonster("", ((spawn_point.monsterid) ? spawn_point.monsterid : mon), spawn_point, spawn_point, spawn_point.origin, false, false, 2);
+       else // if spawnmob field falls through (unset), fallback to mon (relying on spawnmonster for that behaviour)
+               monster = spawnmonster(spawn(), spawn_point.spawnmob, mon.m_id, spawn_point, spawn_point, spawn_point.origin, false, false, 2);
 
        if(spawn_point) monster.target2 = spawn_point.target2;
        monster.spawnshieldtime = time;
@@ -91,10 +93,10 @@ void invasion_SpawnChosenMonster(float mon)
        else
        {
                RandomSelection_Init();
-               if(inv_monsters_perteam[NUM_TEAM_1] > 0) RandomSelection_Add(NULL, NUM_TEAM_1, string_null, 1, 1);
-               if(inv_monsters_perteam[NUM_TEAM_2] > 0) RandomSelection_Add(NULL, NUM_TEAM_2, string_null, 1, 1);
-               if(invasion_teams >= 3) if(inv_monsters_perteam[NUM_TEAM_3] > 0) { RandomSelection_Add(NULL, NUM_TEAM_3, string_null, 1, 1); }
-               if(invasion_teams >= 4) if(inv_monsters_perteam[NUM_TEAM_4] > 0) { RandomSelection_Add(NULL, NUM_TEAM_4, string_null, 1, 1); }
+               if(inv_monsters_perteam[NUM_TEAM_1] > 0) RandomSelection_AddFloat(NUM_TEAM_1, 1, 1);
+               if(inv_monsters_perteam[NUM_TEAM_2] > 0) RandomSelection_AddFloat(NUM_TEAM_2, 1, 1);
+               if(invasion_teams >= 3) if(inv_monsters_perteam[NUM_TEAM_3] > 0) { RandomSelection_AddFloat(NUM_TEAM_3, 1, 1); }
+               if(invasion_teams >= 4) if(inv_monsters_perteam[NUM_TEAM_4] > 0) { RandomSelection_AddFloat(NUM_TEAM_4, 1, 1); }
 
                monster.team = RandomSelection_chosen_float;
        }
@@ -120,7 +122,7 @@ void invasion_SpawnChosenMonster(float mon)
 
 void invasion_SpawnMonsters(int supermonster_count)
 {
-       int chosen_monster = invasion_PickMonster(supermonster_count);
+       Monster chosen_monster = invasion_PickMonster(supermonster_count);
 
        invasion_SpawnChosenMonster(chosen_monster);
 }
@@ -412,7 +414,7 @@ MUTATOR_HOOKFUNCTION(inv, AllowMobSpawning)
        return true;
 }
 
-MUTATOR_HOOKFUNCTION(inv, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(inv, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(0, float) = invasion_teams;
 }
index f299c7d07eb5178df28a7da98f72911ae4124195..944311598090c80e7f19f489ed2631ff52d1ff47 100644 (file)
@@ -40,7 +40,7 @@ const vector KH_KEY_MIN = '-10 -10 -46';
 const vector KH_KEY_MAX = '10 10 3';
 const float KH_KEY_BRIGHTNESS = 2;
 
-float kh_no_radar_circles;
+bool kh_no_radar_circles;
 
 // kh_state
 //     bits  0- 4: team of key 1, or 0 for no such key, or 30 for dropped, or 31 for self
@@ -77,10 +77,11 @@ float kh_interferemsg_time, kh_interferemsg_team;
 .float kh_dropperteam;
 .entity kh_previous_owner;
 .float kh_previous_owner_playerid;
-.float kh_cp_duration;
 
 float kh_key_dropped, kh_key_carried;
 
+int kh_Key_AllOwnedByWhichTeam();
+
 const float ST_KH_CAPS = 1;
 void kh_ScoreRules(int teams)
 {
@@ -782,14 +783,11 @@ void kh_Key_Spawn(entity initial_owner, float _angle, float i)  // runs every ti
 }
 
 // -1 when no team completely owns all keys yet
-float kh_Key_AllOwnedByWhichTeam()  // constantly called. check to see if all the keys are owned by the same team
+int kh_Key_AllOwnedByWhichTeam()  // constantly called. check to see if all the keys are owned by the same team
 {
        entity key;
-       float teem;
-       float keys;
-
-       teem = -1;
-       keys = NumTeams(kh_teams);
+       int teem = -1;
+       int keys = NumTeams(kh_teams);
        FOR_EACH_KH_KEY(key)
        {
                if(!key.owner)
@@ -855,24 +853,23 @@ void kh_Key_DropAll(entity player, float suicide) // runs whenever a player dies
        }
 }
 
-float kh_CheckPlayers(float num)
+int kh_GetMissingTeams()
 {
-       if(num < NumTeams(kh_teams))
+       int missing_teams = 0;
+       for(int i = 0; i < NumTeams(kh_teams); ++i)
        {
-               float t_team = kh_Team_ByID(num);
-               float players = 0;
+               int teem = kh_Team_ByID(i);
+               int players = 0;
                FOREACH_CLIENT(IS_PLAYER(it), LAMBDA(
-                       if(!IS_DEAD(it) && !PHYS_INPUT_BUTTON_CHAT(it) && it.team == t_team)
+                       if(!IS_DEAD(it) && !PHYS_INPUT_BUTTON_CHAT(it) && it.team == teem)
                                ++players;
                ));
-
-               if (!players) { return t_team; }
+               if (!players)
+                       missing_teams |= pow(2, i);
        }
-       return 0;
+       return missing_teams;
 }
 
-#define KH_READY_TEAMS() (!p1 + !p2 + ((NumTeams(kh_teams) >= 3) ? !p3 : p3) + ((NumTeams(kh_teams) >= 4) ? !p4 : p4))
-#define KH_READY_TEAMS_OK() (KH_READY_TEAMS() == NumTeams(kh_teams))
 void kh_WaitForPlayers()  // delay start of the round until enough players are present
 {
        if(time < game_starttime)
@@ -881,9 +878,9 @@ void kh_WaitForPlayers()  // delay start of the round until enough players are p
                return;
        }
 
-       static float prev_missing_teams_mask;
-       float p1 = kh_CheckPlayers(0), p2 = kh_CheckPlayers(1), p3 = kh_CheckPlayers(2), p4 = kh_CheckPlayers(3);
-       if(KH_READY_TEAMS_OK())
+       static int prev_missing_teams_mask;
+       int missing_teams_mask = kh_GetMissingTeams();
+       if(!missing_teams_mask)
        {
                if(prev_missing_teams_mask > 0)
                        Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_MISSING_TEAMS);
@@ -901,15 +898,6 @@ void kh_WaitForPlayers()  // delay start of the round until enough players are p
                }
                else
                {
-                       int missing_teams_mask = 0;
-                       if(kh_teams & BIT(0))
-                               missing_teams_mask += boolean(p1) * 1;
-                       if(kh_teams & BIT(1))
-                               missing_teams_mask += boolean(p2) * 2;
-                       if(kh_teams & BIT(2))
-                               missing_teams_mask += boolean(p3) * 4;
-                       if(kh_teams & BIT(3))
-                               missing_teams_mask += boolean(p4) * 8;
                        if(prev_missing_teams_mask != missing_teams_mask)
                        {
                                Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MISSING_TEAMS, missing_teams_mask);
@@ -930,7 +918,7 @@ void kh_EnableTrackingDevice()  // runs after each round
 
 void kh_StartRound()  // runs at the start of each round
 {
-       float i, players, teem;
+       int i, players, teem;
 
        if(time < game_starttime)
        {
@@ -938,8 +926,7 @@ void kh_StartRound()  // runs at the start of each round
                return;
        }
 
-       float p1 = kh_CheckPlayers(0), p2 = kh_CheckPlayers(1), p3 = kh_CheckPlayers(2), p4 = kh_CheckPlayers(3);
-       if(!KH_READY_TEAMS_OK())
+       if(kh_GetMissingTeams())
        {
                kh_Controller_SetThink(1, kh_WaitForPlayers);
                return;
@@ -1285,7 +1272,7 @@ MUTATOR_HOOKFUNCTION(kh, MatchEnd)
        kh_finalize();
 }
 
-MUTATOR_HOOKFUNCTION(kh, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(kh, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(0, float) = kh_teams;
 }
index 9a98df98fda007eee44fc3e982da116b8a3584d2..d0fb5f95bc2ff0c455a96da9900932b586e75e8f 100644 (file)
@@ -42,9 +42,8 @@ REGISTER_MUTATOR(kh, false)
 // ALL OF THESE should be removed in the future, as other code should not have to care
 
 // used by bots:
-float kh_tracking_enabled;
+bool kh_tracking_enabled;
 .entity kh_next;
-float kh_Key_AllOwnedByWhichTeam();
 
 USING(kh_Think_t, void());
 void kh_StartRound();
index b791a69dce9830cc42b45743501dce63bbc80ff1..abe6b846e73fb714e4f132bef49ff7df0d89cd4d 100644 (file)
@@ -343,7 +343,7 @@ MUTATOR_HOOKFUNCTION(rc, ForbidPlayerScore_Clear)
                return true; // in qualifying, you don't lose score by observing
 }
 
-MUTATOR_HOOKFUNCTION(rc, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(rc, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(0, float) = race_teams;
 }
index d906c1988c247c6bf4f4353da149d31006e5e192..101f57fcc4d6efb96ecd5d2ed5157b0065c29060 100644 (file)
@@ -57,7 +57,7 @@ void tdm_DelayedInit(entity this)
        }
 }
 
-MUTATOR_HOOKFUNCTION(tdm, GetTeamCount, CBC_ORDER_EXCLUSIVE)
+MUTATOR_HOOKFUNCTION(tdm, CheckAllowedTeams, CBC_ORDER_EXCLUSIVE)
 {
        M_ARGV(1, string) = "tdm_team";
        return true;
index abf7f71523c12146ad8b5422fe417a4d6048cd90..044d6444347d5f93929daa74ffe832da4f1590f1 100644 (file)
@@ -55,7 +55,6 @@ entity pathlib_mknode(vector where,entity parent)
     setsize(node, '0 0 0', '0 0 0');
 
     setorigin(node, where);
-    node.medium = pointcontents(where);
 #if DEBUGPATHING
     pathlib_showsquare(where, 1 ,15);
 #endif
index 4ae0c2c86d4b5f0f2970cf9fdcda76393dfb84bc..028a2c7e6e5b26eb9b01650327ab8b153bc5617e 100644 (file)
@@ -9,7 +9,6 @@
 .entity path_prev;
 
 #define inwater(point) (pointcontents(point) == CONTENT_WATER)
-.int medium;
 
 const vector PLIB_FORWARD = '0 1 0';
 //#define PLIB_BACK    '0 -1 0'
index e95ae98193281c9ea5a6b1226d22b7a52548b4db..e270f38df034c3232cdcddbb12ed034f10ace7e0 100644 (file)
@@ -555,9 +555,8 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage,
 
         // increment frag counter for used weapon type
         Weapon w = DEATH_WEAPONOF(deathtype);
-        if(w != WEP_Null)
-       if(accuracy_isgooddamage(attacker, this))
-        attacker.accuracy.(accuracy_frags[w.m_id-1]) += 1;
+               if(w != WEP_Null && accuracy_isgooddamage(attacker, this))
+                       attacker.accuracy.(accuracy_frags[w.m_id-1]) += 1;
 
                MUTATOR_CALLHOOK(PlayerDies, inflictor, attacker, this, deathtype, damage);
                excess = M_ARGV(4, float);
@@ -685,7 +684,7 @@ void dedicated_print(string input)
  */
 int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodcontrol)
 {
-       if (!teamsay && !privatesay) if (substring(msgin, 0, 1) == " ")
+       if (!teamsay && !privatesay && substring(msgin, 0, 1) == " ")
         msgin = substring(msgin, 1, -1); // work around DP say bug (say_team does not have this!)
 
        msgin = formatmessage(source, msgin);
index 59cc052af421942def992c27f5103fd3d08d00d8..18d32c2f06369b05dd5be39db868aca414a10d44 100644 (file)
@@ -317,7 +317,7 @@ entity Spawn_WeightedPoint(entity firstspot, float lower, float upper, float exp
 
        RandomSelection_Init();
        for(spot = firstspot; spot; spot = spot.chain)
-               RandomSelection_Add(spot, 0, string_null, pow(bound(lower, spot.spawnpoint_score.y, upper), exponent) * spot.cnt, (spot.spawnpoint_score.y >= lower) * 0.5 + spot.spawnpoint_score.x);
+               RandomSelection_AddEnt(spot, pow(bound(lower, spot.spawnpoint_score.y, upper), exponent) * spot.cnt, (spot.spawnpoint_score.y >= lower) * 0.5 + spot.spawnpoint_score.x);
 
        return RandomSelection_chosen_ent;
 }
index de7f2f992617320717d079bd86ea8c8c68f91ed6..4632866b4886755e7657da57ca2cc95fa3039109 100644 (file)
@@ -216,23 +216,23 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint)
 // set c1...c4 to show what teams are allowed
 void CheckAllowedTeams (entity for_whom)
 {
-       int dm = 0;
+       int teams_mask = 0;
 
        c1 = c2 = c3 = c4 = -1;
        cb1 = cb2 = cb3 = cb4 = 0;
 
        string teament_name = string_null;
 
-       bool mutator_returnvalue = MUTATOR_CALLHOOK(GetTeamCount, dm, teament_name);
-       dm = M_ARGV(0, float);
+       bool mutator_returnvalue = MUTATOR_CALLHOOK(CheckAllowedTeams, teams_mask, teament_name);
+       teams_mask = M_ARGV(0, float);
        teament_name = M_ARGV(1, string);
 
        if(!mutator_returnvalue)
        {
-               if(dm & BIT(0)) c1 = 0;
-               if(dm & BIT(1)) c2 = 0;
-               if(dm & BIT(2)) c3 = 0;
-               if(dm & BIT(3)) c4 = 0;
+               if(teams_mask & BIT(0)) c1 = 0;
+               if(teams_mask & BIT(1)) c2 = 0;
+               if(teams_mask & BIT(2)) c3 = 0;
+               if(teams_mask & BIT(3)) c4 = 0;
        }
 
        // find out what teams are allowed if necessary
@@ -508,13 +508,13 @@ float FindSmallestTeam(entity pl, float ignore_pl)
 
        // now t is the minimum, or A minimum!
        if(t == 1 || TeamSmallerEqThanTeam(1, t, pl))
-               RandomSelection_Add(NULL, 1, string_null, 1, 1);
+               RandomSelection_AddFloat(1, 1, 1);
        if(t == 2 || TeamSmallerEqThanTeam(2, t, pl))
-               RandomSelection_Add(NULL, 2, string_null, 1, 1);
+               RandomSelection_AddFloat(2, 1, 1);
        if(t == 3 || TeamSmallerEqThanTeam(3, t, pl))
-               RandomSelection_Add(NULL, 3, string_null, 1, 1);
+               RandomSelection_AddFloat(3, 1, 1);
        if(t == 4 || TeamSmallerEqThanTeam(4, t, pl))
-               RandomSelection_Add(NULL, 4, string_null, 1, 1);
+               RandomSelection_AddFloat(4, 1, 1);
 
        return RandomSelection_chosen_float;
 }
index 176b69e6b6c9e5f720f2dfc09fb9af13367c1ff8..3b7aa7bf893f7871bad4c5a2f54502c2a81aae8a 100644 (file)
@@ -399,7 +399,7 @@ void fireBullet(entity this, vector start, vector dir, float spread, float max_s
                entity hit = trace_ent;
 
                // When hitting sky, stop.
-               if (pointcontents(start) == CONTENT_SKY)
+               if (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SKY)
                        break;
 
                // can't use noimpact, as we need to pass through walls
@@ -445,7 +445,7 @@ void fireBullet(entity this, vector start, vector dir, float spread, float max_s
                        }
                }
 
-               if (is_weapclip)
+               if (is_weapclip && !autocvar_g_ballistics_penetrate_clips)
                        break;
 
                // go through solid!
index 451c50ec12f13b861254c75a3d4313fea115e0e9..4968d3c31f4d2f813ac5cdddde94f167ec2b52e4 100644 (file)
@@ -21,7 +21,9 @@
 
 float W_WeaponRateFactor(entity this)
 {
-       float t = 1.0 / g_weaponratefactor;
+       float t = 1;
+       if(g_weaponratefactor > 0)
+               t = 1.0 / g_weaponratefactor;
 
        MUTATOR_CALLHOOK(WeaponRateFactor, t, this);
        t = M_ARGV(0, float);