From: Mario Date: Sun, 15 Nov 2015 18:08:09 +0000 (+1000) Subject: Add level 3 X-Git-Tag: xonotic-v0.8.2~1654^2~9 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=83441f9afec54003d71cba8955e867eec0c06a69;p=xonotic%2Fxonotic-data.pk3dir.git Add level 3 --- diff --git a/gfx/hud/default/minigames/bd/brick4.jpg b/gfx/hud/default/minigames/bd/brick4.jpg new file mode 100644 index 000000000..2b6c14f3e Binary files /dev/null and b/gfx/hud/default/minigames/bd/brick4.jpg differ diff --git a/minigames/bulldozer/storage_level2.txt b/minigames/bulldozer/storage_level2.txt index 8bf9d44cc..dd15380a2 100644 --- a/minigames/bulldozer/storage_level2.txt +++ b/minigames/bulldozer/storage_level2.txt @@ -1,5 +1,5 @@ // bulldozer storage "level2" last updated 16-11-2015 03:34:13 -nextlevel = "level2" +nextlevel = "level3" "a20" 4 "0 0 0" ; "b20" 4 "0 0 0" ; "c20" 4 "0 0 0" ; diff --git a/minigames/bulldozer/storage_level3.txt b/minigames/bulldozer/storage_level3.txt new file mode 100644 index 000000000..d3f975bc6 --- /dev/null +++ b/minigames/bulldozer/storage_level3.txt @@ -0,0 +1,279 @@ +// bulldozer storage "level3" last updated 16-11-2015 04:06:54 +nextlevel = "level3" +"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 0 0" ; +"n13" 3 "0 0 0" ; +"n14" 3 "0 0 0" ; +"n12" 3 "0 0 0" ; diff --git a/qcsrc/common/minigames/minigame/bd.qc b/qcsrc/common/minigames/minigame/bd.qc index 3d36b492c..4ece34e8f 100644 --- a/qcsrc/common/minigames/minigame/bd.qc +++ b/qcsrc/common/minigames/minigame/bd.qc @@ -34,7 +34,8 @@ const int BD_TILE_BOULDER = 3; const int BD_TILE_BRICK1 = 4; const int BD_TILE_BRICK2 = 5; const int BD_TILE_BRICK3 = 6; -const int BD_TILE_LAST = 6; +const int BD_TILE_BRICK4 = 7; +const int BD_TILE_LAST = 7; string autocvar_sv_minigames_bulldozer_startlevel = "level1"; @@ -92,7 +93,8 @@ bool bd_canfill(int ttype) { case BD_TILE_BRICK1: case BD_TILE_BRICK2: - case BD_TILE_BRICK3: return true; + case BD_TILE_BRICK3: + case BD_TILE_BRICK4: return true; } return false; @@ -121,7 +123,8 @@ bool bd_move_dozer(entity minigame, entity dozer) case BD_TILE_DOZER: // wtf, but let's do this incase case BD_TILE_BRICK1: case BD_TILE_BRICK2: - case BD_TILE_BRICK3: return false; + case BD_TILE_BRICK3: + case BD_TILE_BRICK4: return false; case BD_TILE_BOULDER: { string testpos; @@ -200,13 +203,14 @@ void bd_editor_place(entity minigame, entity player, string pos, int thetile) { if ( bd_valid_tile(pos) ) { - bool exists = ( bd_find_piece(minigame, pos, false) || bd_find_piece(minigame, pos, true) ); + entity found_piece = bd_find_piece(minigame, pos, false); + entity targ = bd_find_piece(minigame, pos, true); entity dozer = bd_find_dozer(minigame); if(dozer && thetile == BD_TILE_DOZER && pos != dozer.netname) return; // nice try - if(exists) + if(found_piece || (targ && thetile != BD_TILE_BOULDER)) { entity piece = bd_find_piece(minigame, pos, false); if(!piece) piece = bd_find_piece(minigame, pos, true); @@ -405,6 +409,21 @@ bool bd_save_level(entity minigame) { if(minigame.bd_levelname && minigame.bd_levelname != "") { + int target_count = 0, boulder_count = 0; + entity piece = world; + while((piece = findentity(piece,owner,minigame))) + if(piece.classname == "minigame_board_piece") + if(piece.bd_tiletype == BD_TILE_BOULDER) + ++boulder_count; + else if(piece.bd_tiletype == BD_TILE_TARGET) + ++target_count; + + if(boulder_count != target_count) + { + LOG_INFO("Not enough targets or boulders, fix your level!\n"); + return false; + } + // saves all objects to the database file string file_name; float file_get; @@ -599,6 +618,7 @@ string bd_get_tile_pic(int tileid) case BD_TILE_BRICK1: return "bd/brick1"; case BD_TILE_BRICK2: return "bd/brick2"; case BD_TILE_BRICK3: return "bd/brick3"; + case BD_TILE_BRICK4: return "bd/brick4"; case BD_TILE_TARGET: return "bd/target"; case BD_TILE_DOZER: return "bd/dozer"; } @@ -626,13 +646,7 @@ 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); - string thepiece = "bd/brick1"; - switch(e.bd_tiletype) - { - case BD_TILE_BOULDER: thepiece = "bd/boulder"; break; - case BD_TILE_BRICK2: thepiece = "bd/brick2"; break; - case BD_TILE_BRICK3: thepiece = "bd/brick3"; break; - } + string thepiece = bd_get_tile_pic(e.bd_tiletype); minigame_drawpic_centered( tile_pos, minigame_texture(thepiece), @@ -703,8 +717,9 @@ void bd_hud_board(vector pos, vector mySize) if(active_minigame.minigame_flags & BD_TURN_EDIT) if(bd_valid_tile(bd_curr_pos)) { - bool exists = (bd_find_piece(active_minigame, bd_curr_pos, false) || bd_find_piece(active_minigame, bd_curr_pos, true)); - string thepiece = ((exists) ? "bd/delete" : bd_get_tile_pic(bd_curr_tile)); + entity piece = bd_find_piece(active_minigame, bd_curr_pos, false); + entity targ = bd_find_piece(active_minigame, bd_curr_pos, true); + string thepiece = ((piece || (targ && bd_curr_tile != BD_TILE_BOULDER)) ? "bd/delete" : bd_get_tile_pic(bd_curr_tile)); tile_pos = minigame_tile_pos(bd_curr_pos,BD_LET_CNT,BD_NUM_CNT); tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);