You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(136) |
Dec
(218) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(214) |
Feb
(208) |
Mar
(186) |
Apr
(15) |
May
(3) |
Jun
(35) |
Jul
(6) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(58) |
Aug
(123) |
Sep
(31) |
Oct
(9) |
Nov
|
Dec
(1) |
2006 |
Jan
(25) |
Feb
(10) |
Mar
(25) |
Apr
(61) |
May
|
Jun
(78) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(12) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(10) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Rob <geo...@us...> - 2006-03-16 21:52:35
|
Update of /cvsroot/timewarp/source/games In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19527/source/games Modified Files: gamehierarchy.cpp Log Message: cleaning up useless/obsolete attributes Index: gamehierarchy.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gamehierarchy.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** gamehierarchy.cpp 11 Jul 2005 00:25:11 -0000 1.12 --- gamehierarchy.cpp 16 Mar 2006 21:52:31 -0000 1.13 *************** *** 275,306 **** // start copying stuff ... - /* - //melee = maingame->melee; // this is a global variable - - panelSprite = maingame->panelSprite; - kaboomSprite = maingame->kaboomSprite; - hotspotSprite = maingame->hotspotSprite; - sparkSprite = maingame->sparkSprite; - asteroidExplosionSprite = maingame->asteroidExplosionSprite; - asteroidSprite = maingame->asteroidSprite; - planetSprite = maingame->planetSprite; - xpl1Sprite = maingame->xpl1Sprite; - planet_victory = maingame->planet_victory; - */ - /* - meleedata.panelSprite = new SpaceSprite(&melee[MELEE_PANEL], PANEL_FRAMES, SpaceSprite::IRREGULAR); - meleedata.kaboomSprite = new SpaceSprite(&melee[MELEE_KABOOM], KABOOM_FRAMES, - SpaceSprite::ALPHA | SpaceSprite::MASKED | SpaceSprite::MIPMAPED); - meleedata.hotspotSprite = new SpaceSprite(&melee[MELEE_HOTSPOT], HOTSPOT_FRAMES, - SpaceSprite::ALPHA | SpaceSprite::MASKED | SpaceSprite::MIPMAPED); - meleedata.sparkSprite = new SpaceSprite(&melee[MELEE_SPARK], SPARK_FRAMES, - SpaceSprite::ALPHA | SpaceSprite::MASKED | SpaceSprite::MIPMAPED | SpaceSprite::MATCH_SCREEN_FORMAT); - meleedata.asteroidExplosionSprite = new SpaceSprite(&melee[MELEE_ASTEROIDEXPLOSION], ASTEROIDEXPLOSION_FRAMES); - meleedata.asteroidSprite = new SpaceSprite(&melee[MELEE_ASTEROID], ASTEROID_FRAMES); - meleedata.planetSprite = new SpaceSprite(&melee[MELEE_PLANET], PLANET_FRAMES); - meleedata.xpl1Sprite = new SpaceSprite(&melee[MELEE_XPL1], XPL1_FRAMES, - SpaceSprite::ALPHA | SpaceSprite::MASKED | SpaceSprite::MIPMAPED); - */ - set_config_file("client.ini"); --- 275,278 ---- |
From: Rob <geo...@us...> - 2006-03-16 16:11:18
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6105/source/melee Modified Files: mhelpers.cpp msprite.cpp Log Message: graphics bugfix Index: msprite.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/msprite.cpp,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** msprite.cpp 15 Mar 2006 13:04:42 -0000 1.32 --- msprite.cpp 16 Mar 2006 16:11:13 -0000 1.33 *************** *** 78,81 **** --- 78,82 ---- switch (bitmap_color_depth(bmp)) { case 16: { + // better: alpha is NOT supported for 16-bit color depth. rgba4444_as_rgb16 (bmp); //invert_alpha(bmp); *************** *** 333,338 **** --- 334,343 ---- void SpaceSprite::generate_mipmaps() { + // NOTE: + // for some unknown reason, this causes a crash when the star sprites are deleted in 16-bit mode. + // so, I've disabled the use of these cached sprites. STACKTRACE; + #ifdef _USE_MIPMAP int bpp, level, i; if (general_attributes & MIPMAPED) *************** *** 363,366 **** --- 368,372 ---- } } + #endif } *************** *** 468,472 **** { STACKTRACE ! int i, j, obpp=0; BITMAP *bmp;//, *tmp = 0; --- 474,478 ---- { STACKTRACE ! int i, j; BITMAP *bmp;//, *tmp = 0; *************** *** 487,513 **** bpp = videosystem.bpp; - originaltype = images[0].type; - switch (originaltype) { - case DAT_RLE_SPRITE: { - //bw = ((RLE_SPRITE *)images[0].dat)->w; - //bh = ((RLE_SPRITE *)images[0].dat)->h; - obpp = ((RLE_SPRITE *)images[0].dat)->color_depth; - } - break; - case DAT_BITMAP: { - //bw = ((BITMAP *)images[0].dat)->w; - //bh = ((BITMAP *)images[0].dat)->h; - obpp = bitmap_color_depth((BITMAP *)images[0].dat); - } - break; - default: { - {tw_error("SpaceSprite::SpaceSprite - bad data file");} - } - break; - } - - if (bpp == 0) - bpp = obpp; - // this is moved lower... // if (obpp != bpp) --- 493,496 ---- *************** *** 520,549 **** - // if (general_attributes & IRREGULAR) - // goto irregular; - - for(i = 1; i < sprite_count; i++) - { - if (images[i].type != originaltype) - {tw_error ("SpaceSprite - bad data file");} - - /* - switch (originaltype) { - case DAT_RLE_SPRITE: { - //if ((w != ((RLE_SPRITE *)images[i].dat)->w) || - // (h != ((RLE_SPRITE *)images[i].dat)->h) ) {tw_error("SpaceSprite - size changed");} - if (((RLE_SPRITE *)images[i].dat)->color_depth != obpp) {tw_error("SpaceSprite - changing source color depth not yet allowed");} - } - break; - case DAT_BITMAP: { - //if ((w != ((BITMAP *)images[i].dat)->w) || - // (h != ((BITMAP *)images[i].dat)->h) ) {tw_error("SpaceSprite - size changed");} - if (bitmap_color_depth((BITMAP *)images[i].dat) != obpp) {tw_error("SpaceSprite - changing source color depth not yet allowed");} - } - break; - } - */ - } - smask = new PMASK*[count]; sbitmap[0] = new BITMAP* [count]; --- 503,506 ---- *************** *** 560,572 **** // determine the size of this bitmap int bw = 0, bh = 0; ! switch (originaltype) { case DAT_RLE_SPRITE: bw = ((RLE_SPRITE *)(images[i].dat))->w; bh = ((RLE_SPRITE *)(images[i].dat))->h; break; case DAT_BITMAP: bw = ((BITMAP *)(images[i].dat))->w; bh = ((BITMAP *)(images[i].dat))->h; break; } --- 517,532 ---- // determine the size of this bitmap int bw = 0, bh = 0; ! int obpp = 0; ! switch (images[i].type) { case DAT_RLE_SPRITE: bw = ((RLE_SPRITE *)(images[i].dat))->w; bh = ((RLE_SPRITE *)(images[i].dat))->h; + obpp = ((RLE_SPRITE *)images[i].dat)->color_depth; break; case DAT_BITMAP: bw = ((BITMAP *)(images[i].dat))->w; bh = ((BITMAP *)(images[i].dat))->h; + obpp = bitmap_color_depth((BITMAP *)images[i].dat); break; } *************** *** 580,600 **** clear_to_color(bmp, bitmap_mask_color(bmp)); - // if (obpp != bpp) - // { - // if (!tmp) - // tmp = create_bitmap_ex(obpp, bw, bh); - // if (tmp->w != bmp->w - // } - - // if (!tmp) - // tmp = bmp; - - // if (tmp != bmp) - // { - // int col = bitmap_mask_color(tmp); - // clear_to_color(tmp, col); - // } ! switch (originaltype) { case DAT_RLE_SPRITE: { --- 540,546 ---- clear_to_color(bmp, bitmap_mask_color(bmp)); ! switch (images[i].type) ! { case DAT_RLE_SPRITE: { *************** *** 607,622 **** draw_rle_sprite(tmp, (RLE_SPRITE *)(images[i].dat), 0, 0); - /* - if (general_attributes & ALPHA) - handle_alpha_load(tmp); ! // go from tmp to bmp ! if (obpp != bpp) ! convert_bitmap(tmp, bmp, (general_attributes & MASKED) ? AA_MASKED : 0); ! else ! blit(tmp, bmp, 0, 0, 0, 0, bw, bh); ! */ ! ! //xxx test blit(tmp, bmp, 0, 0, 0, 0, bw, bh); --- 553,558 ---- draw_rle_sprite(tmp, (RLE_SPRITE *)(images[i].dat), 0, 0); ! // use the new color depth. blit(tmp, bmp, 0, 0, 0, 0, bw, bh); *************** *** 625,631 **** break; case DAT_BITMAP: { - if (general_attributes & ALPHA) - handle_alpha_load((BITMAP *)(images[i].dat)); if (obpp != bpp) { --- 561,566 ---- break; case DAT_BITMAP: { + /* if (obpp != bpp) { *************** *** 641,647 **** blit((BITMAP*)images[i].dat, bmp, 0, 0, 0, 0, bw, bh); } } break; ! } //xxx test //color_correct_bitmap(bmp, general_attributes & MASKED); --- 576,591 ---- blit((BITMAP*)images[i].dat, bmp, 0, 0, 0, 0, bw, bh); } + } + */ + + // this copies, and also converts color depth. + blit((BITMAP*)images[i].dat, bmp, 0, 0, 0, 0, bw, bh); } break; ! } ! ! if (general_attributes & ALPHA) ! handle_alpha_load(bmp); ! //xxx test //color_correct_bitmap(bmp, general_attributes & MASKED); *************** *** 678,685 **** --- 622,631 ---- // } + #ifdef _USE_MIPMAP if (general_attributes & MIPMAPED) { generate_mipmaps(); } + #endif *************** *** 1304,1308 **** highest_mip = 0; for (i = 1; i < MAX_MIP_LEVELS; i += 1) { ! sbitmap[i] = NULL; } --- 1250,1254 ---- highest_mip = 0; for (i = 1; i < MAX_MIP_LEVELS; i += 1) { ! sbitmap[i] = 0; } *************** *** 1310,1316 **** bpp = videosystem.bpp; - obpp = bitmap_color_depth(bmplist[0]); - if (bpp == 0) bpp = obpp; if (general_attributes & ALPHA) { if (bpp <= 16) bpp = 16; --- 1256,1260 ---- *************** *** 1332,1335 **** --- 1276,1282 ---- clear_to_color(bmp, bitmap_mask_color(bmp)); + obpp = bitmap_color_depth(bmplist[i]); + + /* if (obpp != bpp) { *************** *** 1342,1349 **** else blit(bmplist[i], bmp, 0, 0, 0, 0, bmp->w, bmp->h); ! } //color_correct_bitmap(bmp, general_attributes & MASKED); for (j = 1; j < rotations; j += 1) --- 1289,1301 ---- else blit(bmplist[i], bmp, 0, 0, 0, 0, bmp->w, bmp->h); ! }*/ ! // this will copy, and convert if necessary. ! blit(bmplist[i], bmp, 0, 0, 0, 0, bmp->w, bmp->h); //color_correct_bitmap(bmp, general_attributes & MASKED); + if (general_attributes & ALPHA) + handle_alpha_load(bmp); + for (j = 1; j < rotations; j += 1) *************** *** 1365,1371 **** --- 1317,1325 ---- } + #ifdef _USE_MIPMAP if (general_attributes & MIPMAPED) { generate_mipmaps(); } + #endif if (!sbitmap[0][0]) Index: mhelpers.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mhelpers.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** mhelpers.cpp 15 Mar 2006 13:04:42 -0000 1.12 --- mhelpers.cpp 16 Mar 2006 16:11:13 -0000 1.13 *************** *** 316,338 **** } ! if ( set_gfx_mode((fullscreen ? GFX_TIMEWARP_FULLSCREEN : GFX_TIMEWARP_WINDOW), width, height, 0, 0)) { ! const char *part1 = "Error switching to graphics mode"; ! char part2[256]; ! sprintf (part2, "(%dx%d @ %d bit)", width, height, bpp); ! const char *part3 = allegro_error; ! if (this->bpp == -1) { ! char buffy[1024]; ! sprintf(buffy, "%s\n%s\n%s", part1, part2, part3); ! tw_error_exit(buffy); } - set_color_depth(this->bpp); - set_gfx_mode((this->fullscreen ? GFX_TIMEWARP_FULLSCREEN : GFX_TIMEWARP_WINDOW), this->width, this->height, 0, 0); - alert (part1, part2, part3, "Continue", NULL, ' ', '\n'); - surface = screen; - ve.subtype = VideoEvent::VALID; - window._event(&ve); - surface = NULL; - redraw(); - return false; } --- 316,346 ---- } ! ! if ( set_gfx_mode((fullscreen ? GFX_TIMEWARP_FULLSCREEN : GFX_TIMEWARP_WINDOW), width, height, 0, 0)) ! { ! // try 1 failed ! if ( set_gfx_mode(GFX_TIMEWARP_FULLSCREEN, 640, 480, 0, 0)) ! { ! // trying default value, also failed ! ! const char *part1 = "Error switching to graphics mode"; ! char part2[256]; ! sprintf (part2, "(%dx%d @ %d bit)", width, height, bpp); ! const char *part3 = allegro_error; ! if (this->bpp == -1) { ! char buffy[1024]; ! sprintf(buffy, "%s\n%s\n%s", part1, part2, part3); ! tw_error_exit(buffy); ! } ! set_color_depth(this->bpp); ! set_gfx_mode((this->fullscreen ? GFX_TIMEWARP_FULLSCREEN : GFX_TIMEWARP_WINDOW), this->width, this->height, 0, 0); ! alert (part1, part2, part3, "Continue", NULL, ' ', '\n'); ! surface = screen; ! ve.subtype = VideoEvent::VALID; ! window._event(&ve); ! surface = NULL; ! redraw(); ! return false; } } |
From: Rob <geo...@us...> - 2006-03-16 16:10:43
|
Update of /cvsroot/timewarp/source/ais In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5764/source/ais Modified Files: c_wussie.cpp Log Message: ai tweak Index: c_wussie.cpp =================================================================== RCS file: /cvsroot/timewarp/source/ais/c_wussie.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** c_wussie.cpp 29 Jan 2006 16:14:33 -0000 1.28 --- c_wussie.cpp 16 Mar 2006 16:10:32 -0000 1.29 *************** *** 395,484 **** - // do another test, namely, check if the enemy ship is not moving away from you. If - // it does, then you've a problem, cause hot pursuit can be deadly. - double a; - a = ship->target->vel.atan() - ship->vel.atan(); - while (a < -PI) a += PI2; - while (a > PI) a -= PI2; - - if (fabs(a) < 0.3 * PI) - { - // and is moving away from you... - // then, try engaging the enemy from another angle of attack ... - - - if (distance > 0.9*option_range[state][0]) - { - if (ship->target->vel.length() > intercept_abort_speed_factor * ship->speed_max) - { - // if the enemy is too fast for you... - // just move to some other direction - - // hmm, actually, this is good practice in almost any occasion... - // except if you're really much faster than the enemy - - double b; - b = ship->trajectory_angle(ship->target); - a = ship->angle - b; - while (a < -PI) a += PI2; - while (a > PI) a -= PI2; - - if ( a < 0 ) - angle_aim = b + 0.5*PI; - else - angle_aim = b - 0.5*PI; - } - } - - } - - Ship *t; - if (ship->target->isShip()) - { - t = (Ship*) ship->target; - } else { - t = 0; - } - - // and what, if the enemy is facing you ? You should be really scared then ... unless ... - if (t && - (t->vel - ship->vel).length() > scared_enemyship_speed_factor * ship->speed_max && // be scared if enemy is moving away very fast - ship->speed_max > 1.1 * t->vel.length() && // be scared if you are able to run away from the enemy - (t->crew/t->crew_max > scare_crew_factor && t->crew > scare_owncrew_minimum) && // be scared if the enemy has much crew left - !ship->isInvisible() && // be scared if you're visible - (distance > option_range[state][0] || // be scared if you're out of firing range - distance < scare_close_distance) // or be scared if you're *very* close. - ) - { - // well... only if the enemy isn't faster than you, otherwise, evading or running - // away doesn't help you anything. - // and, only if the enemy has lots of life left (say, 6 life, or only a small fraction of life). - // and, if you're cloaked you don't have to worry either - // and, if you're not within fire-range - - double d = 2.0 * option_range[state][0]; - if (d > 1000) - d = 1000; - - // evade the enemy - // the enemy is close - if (distance < d) - { - double b = ship->trajectory_angle(ship->target) + PI; - a = ship->target->angle - b; - while (a < -PI) a += PI2; - while (a > PI) a -= PI2; - - // the enemy is facing you - if (fabs(a) < 0.2 * PI) - { - if (a > 0) - angle_aim = b + 0.5*PI; - else - angle_aim = b - 0.5*PI; - } - } - } --- 395,399 ---- *************** *** 549,552 **** --- 464,559 ---- } + + // ----------------- ATTACK ANALYSIS ------------------- + + + Ship *t; + if (ship->target->isShip()) + { + t = (Ship*) ship->target; + } else { + t = 0; + } + + // What, if the enemy is facing you ? Or if he's running away ? You should be really scared then ... unless ... + if (t) + { + Vector2 direction; + + direction = unit_vector(ship->vel); + + double v_enemy_diff = dot_product(direction, t->vel); + + double vmax; + vmax = t->speed_max; + if (t->vel.length() > vmax) // this can happen, in case of a grav whip + vmax = t->vel.length(); + + // be scared if enemy is moving too fast, i.e., you can't get close fast enough + bool too_fast_away = v_enemy_diff > intercept_abort_speed_factor * ship->speed_max; + + // if the enemy is approaching very fast... + bool too_fast_approach = v_enemy_diff < -intercept_abort_speed_factor * ship->speed_max; + + // you can only be scared if you are able to run away from the enemy + // you should have a significant speed advantage.. especially if you're close to the enemy + double range_factor = 1.75 - distance / 100.0; + if (range_factor < 1.25) + range_factor = 1.25; + + + bool can_run_away = ship->speed_max > range_factor * vmax; + + // and you only need to be scared, if you've not so many crew (compared to the enemy) + bool few_crew = t->crew/t->crew_max > scare_crew_factor && t->crew > scare_owncrew_minimum; + + // be scared if you're out of firing range + double d = intercept_abort_range_factor * option_range[state][0]; + if (d < 400) + d = 400; + bool out_of_range = distance > d; + // or be scared if you're *very* close. + bool too_close = distance < scare_close_distance; + bool bad_range = out_of_range | (too_close & can_run_away); + + if (!ship->isInvisible()) // only be scared if you're visible + { + // some conditions to be scared about: + if ( too_fast_away | + (too_fast_approach & can_run_away & few_crew) | + bad_range) + { + // well... only if the enemy isn't faster than you, otherwise, evading or running + // away doesn't help you. + // and, only if the enemy has lots of life left (say, 6 life), or you only a small fraction of life. + // and, if you're cloaked you don't have to worry either + // and, if you're not within fire-range + + + double d = 2.0 * option_range[state][0]; + if (d > 1500) + d = 1500; + if (d < 400) + d = 400; + + // evade the enemy .. and that's only needed, if the enemy is relatively close. + if (distance < d) + { + double b = t->vel.atan();//ship->trajectory_angle(ship->target); + double a = ship->angle - b; + while (a < -PI) a += PI2; + while (a > PI) a -= PI2; + + if (a > 0) + angle_aim = b + scare_evade_angle*PI; + else + angle_aim = b - scare_evade_angle*PI; + } + } + } + } + + // --------------------- END OF ATTACK ANALYSIS ----------------- + // if aim is good, you can fire. // that's checked here... *************** *** 1238,1242 **** // lower means, more cowardly ! intercept_abort_speed_factor = 0.3 + random(0.2); // scareness: when an attack is aborted.. --- 1245,1250 ---- // lower means, more cowardly ! intercept_abort_speed_factor = 0.5 + random(0.4); ! intercept_abort_range_factor = 0.6 + random(0.3); // scareness: when an attack is aborted.. *************** *** 1244,1252 **** scare_owncrew_minimum = 4 + random(4); scare_close_distance = 150 + random(100); - scared_enemyship_speed_factor = 0.85 + random(0.1); // out of range (shoot or not, the further you are, the smaller the chance). out_of_range_multiplier = 0.1 + random(0.1); // smaller means, less range --- 1252,1260 ---- scare_owncrew_minimum = 4 + random(4); scare_close_distance = 150 + random(100); // out of range (shoot or not, the further you are, the smaller the chance). out_of_range_multiplier = 0.1 + random(0.1); // smaller means, less range + scare_evade_angle = 0.4 + random(0.4); |
From: Rob <geo...@us...> - 2006-03-16 16:10:38
|
Update of /cvsroot/timewarp/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5764/source Modified Files: ais.h Log Message: ai tweak Index: ais.h =================================================================== RCS file: /cvsroot/timewarp/source/ais.h,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ais.h 10 Aug 2005 21:06:32 -0000 1.13 --- ais.h 16 Mar 2006 16:10:32 -0000 1.14 *************** *** 108,113 **** // some random settings to give some individuality to a ship. double evasion_base_size, evasion_ship_multiplier, evasion_angle_change, ! intercept_abort_speed_factor, scare_crew_factor, scare_owncrew_minimum, scare_close_distance, ! scared_enemyship_speed_factor, out_of_range_multiplier; }; --- 108,114 ---- // some random settings to give some individuality to a ship. double evasion_base_size, evasion_ship_multiplier, evasion_angle_change, ! intercept_abort_speed_factor, intercept_abort_range_factor, ! scare_crew_factor, scare_owncrew_minimum, scare_close_distance, ! scared_enemyship_speed_factor, out_of_range_multiplier, scare_evade_angle; }; |
From: Rob <geo...@us...> - 2006-03-16 16:04:40
|
Update of /cvsroot/timewarp/ships/sc1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3292/ships/sc1 Modified Files: shpvuxin.ini Log Message: Index: shpvuxin.ini =================================================================== RCS file: /cvsroot/timewarp/ships/sc1/shpvuxin.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpvuxin.ini 8 Jun 2003 17:55:38 -0000 1.3 --- shpvuxin.ini 16 Mar 2006 16:04:35 -0000 1.4 *************** *** 39,43 **** [AI3_Default] ! Weapon_Range = 20 Special = Mine Special2 = Proximity --- 39,45 ---- [AI3_Default] ! Weapon = Narrow ! WeaponVelocity = 999 ! Special_Range = 20 Special = Mine Special2 = Proximity |
From: Rob <geo...@us...> - 2006-03-15 13:05:26
|
Update of /cvsroot/timewarp/source/games In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv629/source/games Modified Files: ggob.cpp gsamp2.cpp Log Message: sprite loading mistake (an attribitute wasn't properly set - I decided to remove that attribute completely to avoid future mistakes; it's a useless attribute. Also, a sprite-phaseshift removed (used in gob to rotate a starbase), because it wasn't compatible with the rotate-on-demand sprite method (which I introduced some time ago). Index: ggob.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/ggob.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** ggob.cpp 28 Aug 2005 20:31:00 -0000 1.42 --- ggob.cpp 15 Mar 2006 13:04:37 -0000 1.43 *************** *** 155,159 **** stationSprite[0] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! stationSprite[0]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "station1sprite"); --- 155,159 ---- stationSprite[0] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! // stationSprite[0]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "station1sprite"); *************** *** 161,165 **** stationSprite[1] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! stationSprite[1]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "station2sprite"); --- 161,165 ---- stationSprite[1] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! // stationSprite[1]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "station2sprite"); *************** *** 167,171 **** stationSprite[2] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! stationSprite[2]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "defender"); --- 167,171 ---- stationSprite[2] = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED | SpaceSprite::MIPMAPED, 64); unload_datafile_object(tmpdata); ! // stationSprite[2]->permanent_phase_shift(8); tmpdata = load_datafile_object("gob.dat", "defender"); Index: gsamp2.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gsamp2.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** gsamp2.cpp 14 Aug 2005 16:14:32 -0000 1.11 --- gsamp2.cpp 15 Mar 2006 13:04:37 -0000 1.12 *************** *** 218,222 **** if (!tmpdata) error( "couldn't find gob.dat#station0sprite"); stationsprite = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED, 64); ! stationsprite->permanent_phase_shift(8); unload_datafile_object(tmpdata); --- 218,222 ---- if (!tmpdata) error( "couldn't find gob.dat#station0sprite"); stationsprite = new SpaceSprite(tmpdata, 1, SpaceSprite::MASKED, 64); ! // stationsprite->permanent_phase_shift(8); unload_datafile_object(tmpdata); |
From: Rob <geo...@us...> - 2006-03-15 13:05:16
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv629/source/melee Modified Files: mgame.cpp mhelpers.cpp mshpdata.cpp msprite.cpp Log Message: sprite loading mistake (an attribitute wasn't properly set - I decided to remove that attribute completely to avoid future mistakes; it's a useless attribute. Also, a sprite-phaseshift removed (used in gob to rotate a starbase), because it wasn't compatible with the rotate-on-demand sprite method (which I introduced some time ago). Index: msprite.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/msprite.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** msprite.cpp 29 Jan 2006 21:06:15 -0000 1.31 --- msprite.cpp 15 Mar 2006 13:04:42 -0000 1.32 *************** *** 31,41 **** if (!s) return a; - if (strstr(s, "+screen")) { - a |= SpaceSprite::MATCH_SCREEN_FORMAT; - } - if (strstr(s, "-screen")) { - a &=~SpaceSprite::MATCH_SCREEN_FORMAT; - } - if (strstr(s, "+mipmap")) { a |= SpaceSprite::MIPMAPED; --- 31,34 ---- *************** *** 61,65 **** if (strstr(s, "+alpha")) { a |= SpaceSprite::ALPHA; - a &=~SpaceSprite::MATCH_SCREEN_FORMAT;//remove me } if (strstr(s, "-alpha")) { --- 54,57 ---- *************** *** 394,397 **** --- 386,391 ---- } + + /* void SpaceSprite::permanent_phase_shift ( int phase ) {STACKTRACE int i, mip; *************** *** 421,424 **** --- 415,419 ---- return; } + */ *************** *** 490,502 **** general_attributes = _attributes; ! if (general_attributes & MATCH_SCREEN_FORMAT) { ! bpp = videosystem.bpp; ! if (general_attributes & ALPHA) { ! if (bpp <= 16) bpp = 16; ! else bpp = 32; ! bpp = 32; //quick hack, because converting to 16bpp isn't quite working properly ! } ! } ! else bpp = 0; originaltype = images[0].type; --- 485,489 ---- general_attributes = _attributes; ! bpp = videosystem.bpp; originaltype = images[0].type; *************** *** 697,700 **** --- 684,692 ---- + if (!sbitmap[0][0]) + { + tw_error("Basic sprite shape expected, but doesn't exist"); + } + /* THE MAIN ROUTINE IS GENERALIZED, BECAUSE A MIX OF 2 TYPES JUST CONFUSING, AND NOT NEEDED ANYMORE return;//end of normal/masked/autorotated *************** *** 816,819 **** --- 808,816 ---- } } + + if (!sbitmap[0][0]) + { + tw_error("Basic sprite shape expected, but doesn't exist"); + } } *************** *** 1311,1323 **** general_attributes = _attributes; ! if (general_attributes & MATCH_SCREEN_FORMAT) { ! bpp = videosystem.bpp; ! if (general_attributes & ALPHA) { ! if (bpp <= 16) bpp = 16; ! else bpp = 32; ! bpp = 32; ! } ! } ! else bpp = 0; obpp = bitmap_color_depth(bmplist[0]); --- 1308,1312 ---- general_attributes = _attributes; ! bpp = videosystem.bpp; obpp = bitmap_color_depth(bmplist[0]); *************** *** 1379,1382 **** --- 1368,1376 ---- generate_mipmaps(); } + + if (!sbitmap[0][0]) + { + tw_error("Basic sprite shape expected, but doesn't exist"); + } } Index: mshpdata.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mshpdata.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** mshpdata.cpp 29 Jan 2006 21:06:15 -0000 1.18 --- mshpdata.cpp 15 Mar 2006 13:04:42 -0000 1.19 *************** *** 782,786 **** set_config_file(info_filename); ! int basic_attrib = SpaceSprite::MASKED | SpaceSprite::MATCH_SCREEN_FORMAT; // and mipmapped? nah. --- 782,786 ---- set_config_file(info_filename); ! int basic_attrib = SpaceSprite::MASKED; // and mipmapped? nah. Index: mgame.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mgame.cpp,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** mgame.cpp 29 Jan 2006 16:14:33 -0000 1.60 --- mgame.cpp 15 Mar 2006 13:04:41 -0000 1.61 *************** *** 230,234 **** if (!melee) tw_error("Error loading melee data\n"); ! meleedata.panelSprite = new SpaceSprite(&melee[MELEE_PANEL], PANEL_FRAMES, SpaceSprite::IRREGULAR | SpaceSprite::MATCH_SCREEN_FORMAT); meleedata.kaboomSprite = new SpaceSprite(&melee[MELEE_KABOOM], KABOOM_FRAMES, SpaceSprite::ALPHA | SpaceSprite::MASKED);// | SpaceSprite::MIPMAPED); --- 230,234 ---- if (!melee) tw_error("Error loading melee data\n"); ! meleedata.panelSprite = new SpaceSprite(&melee[MELEE_PANEL], PANEL_FRAMES, SpaceSprite::IRREGULAR); meleedata.kaboomSprite = new SpaceSprite(&melee[MELEE_KABOOM], KABOOM_FRAMES, SpaceSprite::ALPHA | SpaceSprite::MASKED);// | SpaceSprite::MIPMAPED); *************** *** 236,240 **** SpaceSprite::ALPHA | SpaceSprite::MASKED);// | SpaceSprite::MIPMAPED); meleedata.sparkSprite = new SpaceSprite(&melee[MELEE_SPARK], SPARK_FRAMES, ! SpaceSprite::ALPHA | SpaceSprite::MASKED /*| SpaceSprite::MIPMAPED*/ | SpaceSprite::MATCH_SCREEN_FORMAT); meleedata.asteroidExplosionSprite = new SpaceSprite(&melee[MELEE_ASTEROIDEXPLOSION], ASTEROIDEXPLOSION_FRAMES); meleedata.asteroidSprite = new SpaceSprite(&melee[MELEE_ASTEROID], ASTEROID_FRAMES); --- 236,240 ---- SpaceSprite::ALPHA | SpaceSprite::MASKED);// | SpaceSprite::MIPMAPED); meleedata.sparkSprite = new SpaceSprite(&melee[MELEE_SPARK], SPARK_FRAMES, ! SpaceSprite::ALPHA | SpaceSprite::MASKED /*| SpaceSprite::MIPMAPED*/); meleedata.asteroidExplosionSprite = new SpaceSprite(&melee[MELEE_ASTEROIDEXPLOSION], ASTEROIDEXPLOSION_FRAMES); meleedata.asteroidSprite = new SpaceSprite(&melee[MELEE_ASTEROID], ASTEROID_FRAMES); Index: mhelpers.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mhelpers.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** mhelpers.cpp 28 Aug 2005 20:31:32 -0000 1.11 --- mhelpers.cpp 15 Mar 2006 13:04:42 -0000 1.12 *************** *** 631,635 **** double scale_turning (double turn_rate) { // turn_rate = 20.0 / ((turn_rate + 1.0) * 5.0); ! return (PI2 / 16) / (turn_rate + 1.0) / time_ratio; } double scale_velocity (double velocity) { --- 631,639 ---- double scale_turning (double turn_rate) { // turn_rate = 20.0 / ((turn_rate + 1.0) * 5.0); ! ! double tr = (PI2 / 16) / (turn_rate + 1.0) / time_ratio; ! if (fabs(tr) > 1.0) ! tw_error("Turn rate error"); ! return tr; } double scale_velocity (double velocity) { |
From: Rob <geo...@us...> - 2006-03-15 13:04:58
|
Update of /cvsroot/timewarp/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv629/source Modified Files: melee.h Log Message: sprite loading mistake (an attribitute wasn't properly set - I decided to remove that attribute completely to avoid future mistakes; it's a useless attribute. Also, a sprite-phaseshift removed (used in gob to rotate a starbase), because it wasn't compatible with the rotate-on-demand sprite method (which I introduced some time ago). Index: melee.h =================================================================== RCS file: /cvsroot/timewarp/source/melee.h,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** melee.h 29 Jan 2006 21:06:15 -0000 1.30 --- melee.h 15 Mar 2006 13:04:37 -0000 1.31 *************** *** 447,451 **** unsigned int general_attributes; enum { - MATCH_SCREEN_FORMAT = 0x001, IRREGULAR = 0x002, MIPMAPED = 0x004, --- 447,450 ---- *************** *** 501,505 **** void regenerate_mipmaps(); ! void permanent_phase_shift ( int index ); virtual void change_color_depth(int dest); --- 500,504 ---- void regenerate_mipmaps(); ! //void permanent_phase_shift ( int index ); virtual void change_color_depth(int dest); *************** *** 519,523 **** }; ! int string_to_sprite_attributes ( const char *s, int recommended = SpaceSprite::MASKED | SpaceSprite::MATCH_SCREEN_FORMAT | SpaceSprite::MIPMAPED) ; --- 518,522 ---- }; ! int string_to_sprite_attributes ( const char *s, int recommended = SpaceSprite::MASKED | SpaceSprite::MIPMAPED) ; |
From: Rob <geo...@us...> - 2006-03-15 13:04:58
|
Update of /cvsroot/timewarp/source/other In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv629/source/other Modified Files: planet3d.cpp Log Message: sprite loading mistake (an attribitute wasn't properly set - I decided to remove that attribute completely to avoid future mistakes; it's a useless attribute. Also, a sprite-phaseshift removed (used in gob to rotate a starbase), because it wasn't compatible with the rotate-on-demand sprite method (which I introduced some time ago). Index: planet3d.cpp =================================================================== RCS file: /cvsroot/timewarp/source/other/planet3d.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** planet3d.cpp 27 Sep 2005 22:03:55 -0000 1.24 --- planet3d.cpp 15 Mar 2006 13:04:42 -0000 1.25 *************** *** 57,60 **** --- 57,65 ---- sbitmap[0][i] = bmp; attributes[i] = DEALLOCATE_IMAGE | DEALLOCATE_MASK; + + if (!sbitmap[0][0]) + { + tw_error("Basic sprite shape expected, but doesn't exist"); + } } |
From: Rob <geo...@us...> - 2006-03-15 13:02:36
|
Update of /cvsroot/timewarp/source/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31087/source/util Modified Files: random.cpp random.h Log Message: change to avoid future clashes between use of int/unsigned int (in subtractions) Index: random.cpp =================================================================== RCS file: /cvsroot/timewarp/source/util/random.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** random.cpp 14 Aug 2005 16:14:50 -0000 1.10 --- random.cpp 15 Mar 2006 13:02:12 -0000 1.11 *************** *** 156,160 **** } ! unsigned int tw_random() { // some other thingy... --- 156,161 ---- } ! ! unsigned int tw_random_unsigned() { // some other thingy... *************** *** 176,179 **** --- 177,186 ---- } + // integer output is needed, otherwise an equation like "1 - tw_random()" can return a value of 4 billion. + int tw_random() + { + return int(tw_random_unsigned()); + } + #ifdef _DEBUG #include "../melee/mview.h" *************** *** 266,270 **** //* ((int*) &val + 0) = tw_random(); //* ((int*) &val + sizeof(int)) = tw_random(); ! val = a * (double(tw_random()) / double(0x0100000000)); --- 273,277 ---- //* ((int*) &val + 0) = tw_random(); //* ((int*) &val + sizeof(int)) = tw_random(); ! val = a * (double(tw_random_unsigned()) / double(0x0100000000)); *************** *** 291,295 **** } ! int k = int( tw_random() % unsigned int(a) ); if (k < 0 || k >= a) --- 298,302 ---- } ! int k = int( tw_random_unsigned() % unsigned int(a) ); if (k < 0 || k >= a) Index: random.h =================================================================== RCS file: /cvsroot/timewarp/source/util/random.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** random.h 14 Aug 2005 16:14:50 -0000 1.8 --- random.h 15 Mar 2006 13:02:12 -0000 1.9 *************** *** 73,77 **** double tw_random(double min, double max); int tw_random( int a ); ! unsigned int tw_random(); void tw_random_push_state(); --- 73,77 ---- double tw_random(double min, double max); int tw_random( int a ); ! int tw_random(); void tw_random_push_state(); |
From: Rob <geo...@us...> - 2006-03-15 13:00:41
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29580/source/newships Modified Files: shpalabc.cpp Log Message: alary bc death hang fix Index: shpalabc.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpalabc.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** shpalabc.cpp 28 Aug 2005 20:34:07 -0000 1.22 --- shpalabc.cpp 15 Mar 2006 13:00:07 -0000 1.23 *************** *** 534,538 **** // game->kaboomSprite, 0, KABOOM_FRAMES, time_ratio, DEPTH_EXPLOSIONS)); // if (attributes & ATTRIB_NOTIFY_ON_DEATH) game->ship_died(this, source); ! turn_rate = scale_turning(12+tw_random(80)) * (1 - (tw_random() & 2) ); if (engines_armour > 0) { engines_armour = 0; --- 534,547 ---- // game->kaboomSprite, 0, KABOOM_FRAMES, time_ratio, DEPTH_EXPLOSIONS)); // if (attributes & ATTRIB_NOTIFY_ON_DEATH) game->ship_died(this, source); ! ! // int k = 12 + tw_random(80); ! // double tr = scale_turning(k); ! // int fac = (1 - (tw_random() & 2) ); ! // turn_rate = tr * fac; ! double t = (1 - (tw_random() & 2)); ! turn_rate = scale_turning(12.0 + tw_random(80.0)) * t ; ! if (fabs(turn_rate) > 1.0) ! tw_error("Turn rate error"); ! if (engines_armour > 0) { engines_armour = 0; |
From: Rob <geo...@us...> - 2006-02-20 23:41:38
|
Update of /cvsroot/timewarp/ships/ppi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13092/ships/ppi Modified Files: shpscain.ini Log Message: MRT tweak Index: shpscain.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpscain.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpscain.ini 20 Feb 2006 23:02:05 -0000 1.3 --- shpscain.ini 20 Feb 2006 23:41:30 -0000 1.4 *************** *** 51,55 **** [Quirk] ; this long visible after the ship has been hit (ms) ! VisiblePeriod = 5 ; time (ms) per frame that a flare lasts FlareTime = 100 --- 51,55 ---- [Quirk] ; this long visible after the ship has been hit (ms) ! VisiblePeriod = 500 ; time (ms) per frame that a flare lasts FlareTime = 100 |
From: Rob <geo...@us...> - 2006-02-20 23:35:17
|
Update of /cvsroot/timewarp/ships/ppi/shpscain In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10488/ships/ppi/shpscain Removed Files: SHIP_P00.bmp Log Message: --- SHIP_P00.bmp DELETED --- |
From: Rob <geo...@us...> - 2006-02-20 23:34:27
|
Update of /cvsroot/timewarp/ships/ppi/shpscain In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10121/ships/ppi/shpscain Added Files: SHIP_P07.bmp Log Message: --- NEW FILE: SHIP_P07.bmp --- (This appears to be a binary file; contents omitted.) |
Update of /cvsroot/timewarp/ships/ppi/shpscain In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8928/ships/ppi/shpscain Added Files: exp2_01.bmp exp2_02.bmp exp2_03.bmp exp2_04.bmp exp2_05.bmp exp2_06.bmp exp2_07.bmp exp2_08.bmp Log Message: MRT ship tweak --- NEW FILE: exp2_04.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_01.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_03.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_07.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_08.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_05.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_02.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exp2_06.bmp --- (This appears to be a binary file; contents omitted.) |
From: Rob <geo...@us...> - 2006-02-20 23:28:04
|
Update of /cvsroot/timewarp/ships/ppi/shpscain In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7298/ships/ppi/shpscain Modified Files: content.ini ship_01.bmp Log Message: MRT ship changes Index: ship_01.bmp =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpscain/ship_01.bmp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs8nKEMR and /tmp/cvsHqMKe4 differ Index: content.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpscain/content.ini,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** content.ini 29 Jan 2006 16:27:43 -0000 1.1 --- content.ini 20 Feb 2006 23:28:00 -0000 1.2 *************** *** 5,9 **** WeaponExplosion = exp_ 10 SpecialSprites = special_ 1 +r ! SpecialExplosion = ExtraSprites = ExtraSamples = --- 5,9 ---- WeaponExplosion = exp_ 10 SpecialSprites = special_ 1 +r ! SpecialExplosion = exp2_ 8 ExtraSprites = ExtraSamples = |
From: Rob <geo...@us...> - 2006-02-20 23:13:09
|
Update of /cvsroot/timewarp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31741 Modified Files: twwin.dsp Log Message: MRT tweaked ship sources addition Index: twwin.dsp =================================================================== RCS file: /cvsroot/timewarp/twwin.dsp,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** twwin.dsp 29 Jan 2006 16:19:22 -0000 1.54 --- twwin.dsp 20 Feb 2006 23:13:02 -0000 1.55 *************** *** 1149,1156 **** --- 1149,1164 ---- # Begin Source File + SOURCE=.\source\ppiships\shpsefna.cpp + # End Source File + # Begin Source File + SOURCE=.\source\ppiships\shpstrgu.cpp # End Source File # Begin Source File + SOURCE=.\source\ppiships\shptauh2.cpp + # End Source File + # Begin Source File + SOURCE=.\source\ppiships\shputwde.cpp # End Source File |
From: Rob <geo...@us...> - 2006-02-20 23:06:54
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28183/source/melee Modified Files: mshot.cpp Log Message: MRT ship tweak Index: mshot.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mshot.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** mshot.cpp 29 Jan 2006 16:14:34 -0000 1.23 --- mshot.cpp 20 Feb 2006 23:06:50 -0000 1.24 *************** *** 168,178 **** } ! void AnimatedShot::calculate() { Shot::calculate(); ! frame_step -= frame_time; ! while (frame_step < 0) { ! frame_step += frame_size; ! sprite_index++; ! if (sprite_index == frame_count) sprite_index = 0; } return; --- 168,189 ---- } ! void AnimatedShot::calculate() ! { Shot::calculate(); ! ! if (frame_size) ! { ! // periodic graphics, can restart ! frame_step -= frame_time; ! while (frame_step < 0) { ! frame_step += frame_size; ! sprite_index++; ! if (sprite_index == frame_count) sprite_index = 0; ! } ! } else { ! // frame depends on the distance travelled ! sprite_index = (d / range) * frame_count; ! if (sprite_index >= frame_count) ! sprite_index = frame_count-1; } return; |
From: Rob <geo...@us...> - 2006-02-20 23:05:19
|
Update of /cvsroot/timewarp/source/ppiships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27452/source/ppiships Added Files: shpsefna.cpp shptauh2.cpp Log Message: --- NEW FILE: shptauh2.cpp --- /* $Id: shptauh2.cpp,v 1.1 2006/02/20 23:05:12 geomannl Exp $ */ #include "../ship.h" REGISTER_FILE class TauHunterPPIPortal; class TauHunterPPI : public Ship { public: IDENTITY(TauHunterPPI); double weaponRange, weaponVelocity, weaponRelativity, weaponSpread; double weaponLength, weaponDamage; int weaponNumber; bool weaponAlternating; //double specialRange, specialVelocity; //double specialDamage, specialArmour; double extraVelocity, extraExitVelocityFactor; int extraFrameTime; //double residual_drain; int weapon_side, weapon_angle; //int ship_recharge_amount; //int exit_countdown; //Vector2 ee, vv; double s_a; //int batt_delay, weapon_delay, special_delay, extra_delay; //double default_recharge_rate; bool prevent_more_special; int jumptime, max_jumptime; bool SlidingEntry; Vector2 jumpvector; public: //double extraCriticalRange; //double extraCriticalAngle; //bool holding_spec; bool in_jump; bool just_exited; TauHunterPPI (Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code); virtual int activate_weapon(); virtual void calculate_fire_special(); virtual void calculate(); virtual int handle_damage(SpaceLocation* source, double normal, double direct); virtual int handle_fuel_sap(SpaceLocation* source, double normal); virtual double handle_speed_loss(SpaceLocation* source, double normal); virtual int canCollide(SpaceLocation *other); virtual int translate(Vector2 rel_pos); virtual int accelerate(SpaceLocation *source, double angle, double vel, double max_speed); virtual void animate(Frame *space); virtual double isProtected() const; virtual double isInvisible() const; virtual void calculate_hotspots(); virtual void calculate_turn_left(); virtual void calculate_turn_right(); virtual RGB battPanelColor(); }; class TauHunterPPILaser : public SpaceLine { public: IDENTITY(TauHunterPPILaser); double range, d, v; public: TauHunterPPILaser (double ox, double oy, double oangle, double ov, double orange, double olength, SpaceLocation *creator, double relativity, double odamage); virtual void calculate(); virtual void inflict_damage(SpaceObject *other); }; TauHunterPPI::TauHunterPPI (Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code) : Ship(opos, shipAngle, shipData, code) { //weapon_delay = scale_frames(get_config_float("Weapon", "RechargeDelay", 0)); //special_delay = scale_frames(get_config_float("Special", "RechargeDelay", 0)); //extra_delay = scale_frames(get_config_float("Extra", "RechargeDelay", 0)); weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponVelocity = scale_velocity(get_config_float("Weapon", "Velocity", 0)); weaponLength = get_config_int("Weapon", "Length", 0); weaponSpread = get_config_float("Weapon", "Spread", 0)*PI/180; weaponAlternating = (get_config_int("Weapon", "Alternating", 0) != 0); weaponNumber = get_config_int("Weapon", "Number", 1); weaponDamage = get_config_float("Weapon", "Damage", 0); weaponRelativity = get_config_float("Weapon", "Relativity", 0.0); //specialRange = scale_range(get_config_float("Special", "Range", 0)); //specialVelocity = scale_velocity(get_config_float("Special", "Velocity", 0)); //specialDamage = get_config_int("Special", "Damage", 0); //specialArmour = get_config_int("Special", "Armour", 0); extraVelocity = scale_velocity(get_config_float("Extra", "Velocity", 0)); // extraDrain = get_config_float("Extra", "Drain", 0) / 1000.0; extraExitVelocityFactor = get_config_float("Extra", "ExitVelocityFactor", 1.0); // extraCriticalAngle = get_config_float("Extra", "CriticalAngle", 60)*PI/180; // extraCriticalRange = get_config_float("Extra", "CriticalRange", 0); extraFrameTime = get_config_int("Extra", "FrameTime", 50); weapon_side = tw_random(3); weapon_angle = tw_random(6); in_jump = false; //ship_recharge_amount = recharge_amount; //exit_countdown = 0; // holding_spec = false; just_exited = false; prevent_more_special = true; jumptime = 0; max_jumptime = get_config_int("Extra", "JumpTime", 1000); SlidingEntry = get_config_int("Extra", "SlidingEntry", 0); jumpvector = 0; } int TauHunterPPI::activate_weapon() { STACKTRACE #define R1 27.5 #define R2 5.0 if (in_jump) return false; double wx, wy = 10; double a, b, c; int i, k; for ( k=0; k<3; k++ ) { for ( i=0; i<weaponNumber; i++ ) { wx = R1 * cos((angle + weapon_side*PI2/3)) + -R2 * sin((weapon_angle + i) * PI/3); a = (1 - (random(2.0))/100.0); b = (1 - 0.1*(random(2.0))/100.0); c = (1 - 0.1*(random(2.0))/100.0); SpaceLocation* s = new TauHunterPPILaser(wx, wy, angle + weaponSpread * a, weaponVelocity * c, weaponRange * (1 - 0.2*fabs(a)) * b, weaponLength, this, weaponRelativity, weaponDamage); add(s); if ( sin((angle + weapon_side*PI2/3)) < 0) s->set_depth(get_depth() + 1); else s->set_depth(get_depth() - 1); } weapon_side += 1; if ( weapon_side == 3 ) { weapon_side = 0; weapon_angle += weaponNumber; if ( weapon_angle >= 6 ) weapon_angle -= 6; } if (weaponAlternating) break; } return true; } void TauHunterPPI::calculate_fire_special() { STACKTRACE; special_low = false; if (!fire_special) { prevent_more_special = false; return; } // check timer if(special_recharge > 0) return; if (prevent_more_special) return; if (in_jump) return; if ( batt < special_drain ) { special_low = true; return; } prevent_more_special = true; batt -= special_drain; special_recharge += special_rate; // reset timer //special_recharge += special_rate; // SpaceLocation *s = new TauHunterPPIShot(0, 16, angle, specialVelocity, specialDamage, specialRange, specialArmour, this, // data->spriteWeapon, data->spriteWeaponExplosion, data->spriteSpecial, extraFrameTime); // add(s); add(new Animation(this, pos, data->spriteSpecial, 0, data->spriteSpecial->frames(), extraFrameTime, DEPTH_SPECIAL)); play_sound2(data->sampleSpecial[0]); jumptime = max_jumptime; if (SlidingEntry && vel != 0) jumpvector = unit_vector(vel); else jumpvector = unit_vector(angle); in_jump = true; } void TauHunterPPI::calculate() { STACKTRACE just_exited = false; Ship::calculate(); if ( in_jump ) { jumptime -= frame_time; // exiting the jump if (!fire_special || jumptime < 0) { jumptime = 0; in_jump = false; just_exited = true; prevent_more_special = false; //recharge_amount = 0; targets->add(this); //pos = ee; // reset the battery recharge to immediate recharge. recharge_step = 0; // reset the special-timer to a full period of waiting. special_recharge = special_rate; //pos = normalize(pos + vv * frame_time, map_size); // movement on exit of jumpspace... vel = speed_max * extraExitVelocityFactor * jumpvector;//unit_vector(angle); } else { // prevent recharge timing. recharge_step = 1000; // movement while in jump-space. Vector2 vv = extraVelocity * jumpvector; pos = normalize(pos + vv * frame_time, map_size); vel = 0; } } else if (prevent_more_special) { // prevent recharge timing if you're maintaining a shot. recharge_step = 1000; } } int TauHunterPPI::handle_damage(SpaceLocation *source, double normal, double direct) { STACKTRACE if ( in_jump ) return 0; if ( just_exited && source->isPlanet() ) normal = crew+1; return Ship::handle_damage(source, normal, direct); } int TauHunterPPI::handle_fuel_sap(SpaceLocation *source, double normal) { STACKTRACE if ( in_jump ) return 0; return Ship::handle_fuel_sap(source, normal); } double TauHunterPPI::handle_speed_loss(SpaceLocation *source, double normal) { STACKTRACE if ( in_jump ) return 0; return Ship::handle_speed_loss(source, normal); } int TauHunterPPI::canCollide(SpaceLocation *other) { STACKTRACE if ( in_jump ) return false; else return Ship::canCollide(other); } int TauHunterPPI::translate(Vector2 rel_pos) { STACKTRACE if ( !in_jump ) return Ship::translate(rel_pos); return false; } int TauHunterPPI::accelerate(SpaceLocation *source, double oangle, double vel, double omax_speed) { STACKTRACE if ( !in_jump ) return Ship::accelerate(source, oangle, vel, omax_speed); return false; } void TauHunterPPI::animate(Frame* space) { STACKTRACE if ( !in_jump ) Ship::animate(space); } double TauHunterPPI::isProtected() const { STACKTRACE if ( in_jump ) return 1.0; else return Ship::isProtected(); } double TauHunterPPI::isInvisible() const { STACKTRACE if ( in_jump ) return 1.0; else return Ship::isInvisible(); } void TauHunterPPI::calculate_hotspots() { STACKTRACE if ( !in_jump ) Ship::calculate_hotspots(); } void TauHunterPPI::calculate_turn_left() { STACKTRACE //if ( exit_countdown <= 0 ) if ( !in_jump ) Ship::calculate_turn_left(); } void TauHunterPPI::calculate_turn_right() { STACKTRACE //if ( exit_countdown <= 0 ) if ( !in_jump ) Ship::calculate_turn_right(); } RGB TauHunterPPI::battPanelColor() { RGB c = {50,50,170}; if ( in_jump ) return c; return Ship::battPanelColor(); } TauHunterPPILaser::TauHunterPPILaser (double ox, double oy, double oangle, double ov, double orange, double olength, SpaceLocation *creator, double relativity, double odamage) : SpaceLine(creator, creator->normal_pos(), oangle, olength, makecol(255,255,255)), range(orange), d(0), v(ov) { pos = normalize(pos + rotate(Vector2(-ox, oy), -PI/2+creator->get_angle())); damage_factor = odamage; vel = unit_vector(angle) + creator->get_vel() * relativity; } void TauHunterPPILaser::calculate() { STACKTRACE double r = (d) / range; double r2 = r*r; double r3 = r2*r; int g = (int)floor(225*(1 - 2*r2 + r3)); if (g < 0) g = 0; int b = (int)floor(255*(1 - 6*r2+5*r3)); if (b < 0) b = 0; color = makecol(int(235/(0.7*r+1)), g, b); SpaceLine::calculate(); d += v * frame_time; if (d > range) state = 0; } void TauHunterPPILaser::inflict_damage(SpaceObject *other) { STACKTRACE if (d >= range) return; damage_factor *= pow((1-d/range), 0.2); SpaceLine::inflict_damage(other); state = 0; } REGISTER_SHIP(TauHunterPPI) --- NEW FILE: shpsefna.cpp --- /* $Id: shpsefna.cpp,v 1.1 2006/02/20 23:05:12 geomannl Exp $ */ #include "../ship.h" #include "../frame.h" REGISTER_FILE /* A ship with a harpoon, and a short-range laser. */ class Hook; class SefyNautilus : public Ship { public: int weaponColor; double weaponRange; int weaponFrames; int weaponDamage; double TurnRateFactor, HookDamage; public: Hook *hook; double unrolltime; double specialRange, specialDelay, specialOscFreq, specialRelVelocity, specialSegLength, specialArmour, specialSprConst, specialLifeTime; SefyNautilus(Vector2 opos, double angle, ShipData *data, unsigned int code); virtual void calculate(); virtual int activate_weapon(); virtual int activate_special(); virtual int handle_damage(SpaceLocation *src, double normal, double direct=0); }; static const int maxnodes = 50; class Hook : public SpaceObject { public: double armour; struct ropenode { Vector2 pos, vel, acc; int col; double dL; } ropenode[maxnodes]; int Nnodes, hooklocked; double L, Lmax, ropestart, roll_time, exist_time, life_time, oscperiod, ejvel, ropeseglen, hookfixdist, hookfixangle, hookfixorientation, hooksize, springconst; SpaceLocation *hooktarget; double turnrate_factor; Hook(SefyNautilus *creator, Vector2 orelpos, double TurnRateFactor, double HookDamage, SpaceSprite *osprite); virtual void calculate(); virtual void inflict_damage(SpaceObject *other); virtual int handle_damage(SpaceLocation *src, double normal, double direct=0); virtual void animate ( Frame *space ); void animate_ropeseg( Frame *space, Vector2 pos1, Vector2 pos2, int ropecol ); void unroll(); }; SefyNautilus::SefyNautilus(Vector2 opos, double angle, ShipData *data, unsigned int code) : Ship(opos, angle, data, code) { weaponColor = get_config_int("Weapon", "Color", 0); weaponFrames = get_config_int("Weapon", "Frames", 0); weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponDamage = get_config_int("Weapon", "Damage", 0); // time for retracting 1 piece of rope, in seconds specialLifeTime = get_config_float("Special", "LifeTime", 60.0); // time for retracting 1 piece of rope, in seconds specialDelay = get_config_float("Special", "Delay", 0.5); // osc freq. of the rope when it's released specialOscFreq = get_config_float("Special", "OscFreq", 5.0); // extra velocity of the rope when release specialRelVelocity = scale_velocity(get_config_float("Special", "Velocity", 0)); // default segment length of a piece of rope (in pixels) specialSegLength = get_config_float("Special", "SegLength", 2.0); // armour of the hook specialArmour = get_config_float("Special", "Armour", 5.0); // spring constant: higher value, faster oscillations specialSprConst = get_config_float("Special", "SprConst", 250.0); TurnRateFactor = get_config_float("Special", "TurnRateFactor", 250.0); HookDamage = get_config_float("Special", "Damage", 250.0); hook = 0; unrolltime = 0; } int SefyNautilus::activate_weapon() { STACKTRACE if ( this->nextkeys & keyflag::special ) return FALSE; const int N = 2; Vector2 Laserpositions[N] = { Vector2(-10, 50), Vector2(10, 50) }; double angles[N] = { -0.1, 0.1 }; for ( int i = 0; i < N; ++i ) { game->add(new Laser(this, get_angle()+angles[i], pallete_color[weaponColor], weaponRange, weaponDamage, weaponFrames, this, Laserpositions[i], true )); // synching=true } return TRUE; } int SefyNautilus::activate_special() { STACKTRACE unrolltime += frame_time * 1E-3; if ( hook && hook->exists() ) { if ( !(hook->hooktarget && hook->hooktarget->exists()) ) { // the hook hasn't attached yet - cancel this shot. hook->state = 0; return FALSE; } if (unrolltime > specialDelay) { hook->unroll(); //hook->hooklocked = 1; // stop unrolling any further //--hook->Nnodes; unrolltime -= specialDelay; } return FALSE; } hook = new Hook(this, 100*unit_vector(angle), TurnRateFactor, HookDamage, data->spriteSpecial); game->add( hook ); return TRUE; } void SefyNautilus::calculate() { STACKTRACE Ship::calculate(); // release the hook: if ( (this->nextkeys & keyflag::special) && (this->nextkeys & keyflag::fire ) ) if ( hook && hook->exists() ) hook->state = 0; // detect when the hook disappears - reset the pointer to 0 in that case if ( !(hook && hook->exists()) ) hook = 0; } int SefyNautilus::handle_damage(SpaceLocation *src, double normal, double direct) { STACKTRACE Ship::handle_damage(src, normal, direct); return iround(normal + direct); } Hook::Hook(SefyNautilus *creator, Vector2 orelpos, double TurnRateFactor, double HookDamage, SpaceSprite *osprite) : SpaceObject(creator, creator->pos+orelpos, creator->angle, osprite) { // double specialRange, specialDelay // ; damage_factor = HookDamage; turnrate_factor = TurnRateFactor; sprite_index = get_index(angle); ejvel = creator->specialRelVelocity; // velocity of the ejected hook (0.5). vel = ship->vel + ejvel * unit_vector(ship->angle); // this is in ms armour = creator->specialArmour; Nnodes = 0; roll_time = 0; exist_time = 0; life_time = creator->specialLifeTime; oscperiod = creator->specialOscFreq; ropestart = 50.0; ropeseglen = creator->specialSegLength; // minimum pixels length of a rope segment, approx. hooktarget = 0; hooklocked = 0; springconst = creator->specialSprConst; hooksize = 9; // from center to the eye for the rope. layer = LAYER_SHOTS; set_depth(DEPTH_SHOTS); collide_flag_anyone = ALL_LAYERS; collide_flag_sameteam = ALL_LAYERS; collide_flag_sameship = ALL_LAYERS; isblockingweapons = false; } void Hook::calculate() { STACKTRACE exist_time += frame_time * 1E-3; if ( exist_time > life_time ) state = 0; // if it's completely unrolled ... if ( hooklocked && Nnodes <= 0 ) state = 0; // or if the host ship has gone if ( !(ship && ship->exists()) ) { ship = 0; state = 0; } if ( hooktarget && hooktarget->exists() ) { vel = hooktarget->vel; angle = hooktarget->angle + hookfixangle; sprite_index = get_index(angle); pos = hooktarget->pos + hookfixdist * unit_vector(hooktarget->angle + hookfixorientation); } else if (hooklocked) { state = 0; hooktarget = 0; } if ( state == 0 ) return; SpaceObject::calculate(); if ( !hooklocked) roll_time += frame_time * 1E-3; else // otherwise it keeps pumping energy into the line roll_time = 0.0; Vector2 hookendpos; hookendpos = pos - hooksize * unit_vector(angle); Vector2 ejpos; if (ship && ship->exists() ) { ejpos = ship->pos + ropestart * unit_vector(ship->angle) + 15 * sin(oscperiod*roll_time) * unit_vector(ship->angle + 0.5*PI); } else ejpos = 0; if (ship && ship->exists() && !hooklocked ) { // extend the elastic rope slowly double dL; if ( Nnodes > 0 ) dL = magnitude(min_delta(ropenode[Nnodes-1].pos, ejpos, map_size)); else dL = magnitude(min_delta(hookendpos, ejpos, map_size)); if ( dL > ropeseglen && Nnodes < maxnodes ) { ropenode[Nnodes].pos = ejpos; ropenode[Nnodes].vel = (ship->vel + ejvel * unit_vector(ship->angle)) * 1E+3; // *1E+3 because from now we do calculations in seconds instead of ms. ropenode[Nnodes].col = pallete_color[11 + (Nnodes/4) % 3]; // changes color every 4 pieces ? dL = ropeseglen; ropenode[Nnodes].dL = dL; // relaxed length of the segment between nodes i and i-1. ++ Nnodes; if ( Nnodes == maxnodes ) state = 0; // no target found ... poor thing ;) } } // calculate the nodes on the elastic rope (except the end-points, which are fixed: double k = springconst; // 250.0 int i; Vector2 D; double R; // ropenode[0].acc = ..; // ropenode[Nnodes-1].acc = ..; int Ninterpol, iinterpol; // this may be needed if values of the spring constant are high Ninterpol = 10; double dt = frame_time * 1E-3 / Ninterpol; for ( iinterpol = 0; iinterpol < Ninterpol; ++iinterpol ) { // reset forces for ( i = 0; i < Nnodes; ++i ) ropenode[i].acc = 0; // forces between rope nodes for ( i = 0; i < Nnodes; ++i ) { if ( i > 0 ) { D = min_delta(ropenode[i-1].pos - ropenode[i].pos, map_size); R = D.length(); L = ropenode[i].dL; if ( R != 0 ) ropenode[i].acc += k * (R - L) * D / R; } if ( i < Nnodes-1 ) { D = min_delta(ropenode[i+1].pos - ropenode[i].pos, map_size); R = D.length(); L = ropenode[i+1].dL; if ( R != 0 ) ropenode[i].acc += k * (R - L) * D / R; } } // attached to the hook Vector2 hookacc; hookacc = 0; if ( Nnodes > 0 ) { i = 0; D = min_delta(hookendpos - ropenode[i].pos, map_size); R = D.length(); L = ropenode[i].dL; hookacc = k * (R - L) * D / R; if ( R != 0 ) ropenode[i].acc += hookacc; } // attached to the ship, if it still exists... if ( ship && ship->exists() && Nnodes > 0 ) { i = Nnodes-1; D = min_delta(ejpos - ropenode[i].pos, map_size); R = D.length(); L = ropeseglen; // should be i+1, but that doesn't exist if ( R != 0 ) ropenode[i].acc += k * (R - L) * D / R;; } // slow down a little, for stability for ( i = 0; i < Nnodes; ++i ) ropenode[i].acc -= 10.0 * ropenode[i].vel * dt; // apply accelerations (also to the end points) for ( i = 0; i < Nnodes; ++i ) { ropenode[i].vel += ropenode[i].acc * dt; ropenode[i].pos += ropenode[i].vel * dt; } // apply acceleration to the target: if ( hooktarget && hooktarget->exists() ) { hooktarget->vel -= 0.1 * 1E-3 * hookacc * dt; // and also some deceleration ... double a = 1 - 0.1*dt; if ( a < 0 ) a = 0; if ( a > 1 ) a = 1; hooktarget->vel *= a; // influence the angle of the enemy ship: a = atan(hookendpos - hooktarget->pos); double b, da, rotacc; b = atan(hookacc); da = b - a; rotacc = magnitude(hookacc) * sin(da); hooktarget->angle -= 0.25 * 1E-3 * rotacc * dt; // angle must never exceed half PI with the end of the rope... b = atan(ropenode[0].pos - hookendpos); da = b - a; while ( da > PI ) da -= PI2; while ( da < -PI ) da += PI2; if ( da < -0.5*PI || da > 0.5*PI ) { double dacorr = fabs(da) - 0.5*PI; if ( dacorr > 5*PI2*dt ) dacorr = 5*PI2*dt; if ( da < 0.0 ) hooktarget->angle -= dacorr; else hooktarget->angle += dacorr; } // to stabilize, make sure neither vessels' speed ever exceeds the maximum: double V1, V2; if ( ship && ship->exists() ) { V1 = magnitude(ship->vel); V2 = 2 * ship->speed_max; if ( V1 > V2 ) ship->vel *= V2 / V1; } if ( hooktarget->isShip() ) { V1 = magnitude(hooktarget->vel); V2 = 2 * ((Ship*) hooktarget)->speed_max; if ( V1 > V2 ) hooktarget->vel *= V2 / V1; } } } } void Hook::inflict_damage(SpaceObject *other) { SpaceObject::inflict_damage(other); damage_factor = 0; } int Hook::handle_damage(SpaceLocation *src, double normal, double direct) { STACKTRACE if ( src == hooktarget ) return 0; if ( src->isShip() ) { if ( hooktarget ) // if it's already attached to another ship return 0; if ( src == ship ) return 0; // if it is the ship itself (doh) hooktarget = src; hookfixdist = magnitude(min_delta(pos, src->pos, map_size)); // it makes a different, where you hit the enemy. In the side is better than head-on. // where it is attacked. hookfixorientation = atan(min_delta(pos, src->pos, map_size)) - src->angle + 0.2*PI*(random(2.0)-1.0); hookfixangle = angle - src->angle; collide_flag_anyone = 0; collide_flag_sameteam = 0; collide_flag_sameship = 0; // this is done by inflict-damage... but that applies it all the time, so let's handle that here, instead. //damage(src, damage_factor, 0.0); //damage_factor = 0; // then, reset the damage to zero... hooklocked = 1; // stop unrolling any further src->ship->turn_rate *= turnrate_factor; return 0; } else { SpaceObject::handle_damage(src, normal, direct); armour -= normal + direct; if ( armour <= 0 ) state = 0; return iround(normal + direct); } } void Hook::animate_ropeseg( Frame *space, Vector2 pos1, Vector2 pos2, int ropecol ) { STACKTRACE int ix1, iy1, ix2, iy2; Vector2 co; co = corner(pos1); ix1 = int(co.x); iy1 = int(co.y); co = corner(pos2); ix2 = int(co.x); iy2 = int(co.y); int dx, dy; dx = iround(min_delta(ix2, ix1, map_size.x)); dy = iround(min_delta(iy2, iy1, map_size.y)); ix2 = ix1 + dx; iy2 = iy1 + dy; // simulate visibility of a glittering line in the sun ... double a, colscale; a = atan2((double)dy,(double)dx); colscale = fabs(sin(a)); // flat lying = less visible. int col, r, g, b; col = ropecol; r = iround(getr(col) * colscale); g = iround(getg(col) * colscale); b = iround(getb(col) * colscale); col = makecol(r, g, b); // draw the line line(space->surface, ix1, iy1, ix2, iy2, col); space->add_line(ix1, iy1, ix2, iy2); } void Hook::animate ( Frame *space ) { STACKTRACE SpaceObject::animate(space); // also, animate the rope, these are points in space int i; for ( i = 0; i < Nnodes-1; ++i ) { animate_ropeseg(space, ropenode[i].pos, ropenode[i+1].pos, ropenode[i+1].col); } // extra part, leading to the end of the hook: Vector2 hookendpos; hookendpos = pos - hooksize * unit_vector(angle); i = 0; animate_ropeseg(space, hookendpos, ropenode[i].pos, ropenode[i].col); } void Hook::unroll() { hooklocked = 1; if ( Nnodes > 1 ) --Nnodes; // if ( Nnodes == 0 ) // return; /* Vector2 pos1old = ropenode[0].pos; Vector2 pos2old = ropenode[Nnodes].pos; Vector2 pos1new = pos1old; Vector2 pos2new = ropenode[Nnodes-1].pos; // spread the disappeared distance a little: int i; for ( i = Nnodes-1; i >= 0; --i ) { ropenode[i] = ropenode[i-1]; } */ } REGISTER_SHIP ( SefyNautilus ) |
From: Rob <geo...@us...> - 2006-02-20 23:04:43
|
Update of /cvsroot/timewarp/source/ppiships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27180/source/ppiships Modified Files: shpalabo.cpp shpscain.cpp shputwde.cpp Log Message: MRT ship tweak update Index: shputwde.cpp =================================================================== RCS file: /cvsroot/timewarp/source/ppiships/shputwde.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shputwde.cpp 29 Jan 2006 16:14:34 -0000 1.1 --- shputwde.cpp 20 Feb 2006 23:04:35 -0000 1.2 *************** *** 29,33 **** ! double specialVelocity; int specialFrames; --- 29,33 ---- ! double specialVelocity, specialTurnRate, specialAccelRate; int specialFrames; *************** *** 88,95 **** int lifetime; ! double v; ! UtwigDefenderCrewPodPP(Vector2 opos, int oLifeTime, ! Ship *oship, SpaceSprite *osprite, int ofcount, int ofsize, double ov); virtual void calculate(); --- 88,98 ---- int lifetime; ! double maxvelocity; ! double turnrate; ! double accelrate; ! UtwigDefenderCrewPodPP(Vector2 opos, double oangle, int oLifeTime, ! Ship *oship, SpaceSprite *osprite, int ofcount, int ofsize, double ov, ! double oturnrate, double oaccelrate); virtual void calculate(); *************** *** 135,144 **** ! specialVelocity = scale_velocity(get_config_float("Special", "Velocity", 0)); specialFrames = get_config_int("Special", "Frames", 0); energizetimemax = get_config_float("Special", "Timer", 0) * 1000.0; energizetimer = 0; - - } --- 138,147 ---- ! specialVelocity = scale_velocity(get_config_float("Special", "Velocity", 10)); ! specialTurnRate = scale_turning(get_config_float("Special", "TurnRate", 1)); ! specialAccelRate = scale_acceleration(get_config_float("Special", "AccelRate", 1)); specialFrames = get_config_int("Special", "Frames", 0); energizetimemax = get_config_float("Special", "Timer", 0) * 1000.0; energizetimer = 0; } *************** *** 172,176 **** if ( energizepersonalarmour ) { ! RGB c = {255,200,200}; return c; } else { --- 175,180 ---- if ( energizepersonalarmour ) { ! double a = energizetimer / energizetimemax; ! RGB c = {255,200*a,200*a}; return c; } else { *************** *** 273,276 **** --- 277,287 ---- } + double impact_angle; + if (src->vel != 0) + impact_angle = src->vel.atan(); + else + impact_angle = trajectory_angle(src) + PI; + + if ( energizepersonalarmour ) { *************** *** 279,291 **** { // otherwise, it's hard to die ;) ! Vector2 D = -unit_vector(vel) * this->size.x; ! D += tw_random(Vector2(50,50)) - Vector2(25,25); UtwigDefenderCrewPodPP *cp = new UtwigDefenderCrewPodPP( ! this->normal_pos() + D, specialFrames, this, data->spriteSpecial, 32, ! specialFrames, specialVelocity); ! cp->vel = 0.5 * vel; cp->target = this; --- 290,308 ---- { // otherwise, it's hard to die ;) ! Vector2 D; ! //D = -unit_vector(vel) * this->size.x; ! //D += tw_random(Vector2(50,50)) - Vector2(25,25); ! ! double a = impact_angle + 0.25 * PI * (1.0 - random(2.0)); ! // travel in the "same" direction as the impact - which means, you'll travel in the opposite direction of fire. ! D = unit_vector(a) * 0.8*size.x; UtwigDefenderCrewPodPP *cp = new UtwigDefenderCrewPodPP( ! this->normal_pos() + D, a, specialFrames, this, data->spriteSpecial, 32, ! specialFrames, specialVelocity, ! specialTurnRate, specialAccelRate); ! //cp->vel = 0.5 * vel; cp->target = this; *************** *** 393,407 **** ! UtwigDefenderCrewPodPP::UtwigDefenderCrewPodPP(Vector2 opos, int oLifeTime, ! Ship *oship, SpaceSprite *osprite, int ofcount, int ofsize, double ov) : ! SpaceObject(oship, opos, 0.0, osprite), frame_count(ofcount), frame_size(ofsize), frame_step(0), life(0), ! lifetime(oLifeTime), ! v(ov) { collide_flag_sameship = ALL_LAYERS; collide_flag_sameteam = ALL_LAYERS; --- 410,427 ---- ! UtwigDefenderCrewPodPP::UtwigDefenderCrewPodPP(Vector2 opos, double oangle, int oLifeTime, ! Ship *oship, SpaceSprite *osprite, int ofcount, int ofsize, double ov, ! double oturnrate, double oaccelrate) : ! SpaceObject(oship, opos, oangle, osprite), frame_count(ofcount), frame_size(ofsize), frame_step(0), life(0), ! lifetime(oLifeTime) { + turnrate = oturnrate * frame_time; + accelrate = oaccelrate * frame_time; + collide_flag_sameship = ALL_LAYERS; collide_flag_sameteam = ALL_LAYERS; *************** *** 413,416 **** --- 433,442 ---- debug_id = 2; // for debugging purpose attributes &= ~ATTRIB_STANDARD_INDEX; + + // starting velocity: maxed + maxvelocity = ov; + vel = unit_vector(angle) * maxvelocity; + // make the starting velocity relative to your ship + vel += ship->vel; } *************** *** 425,429 **** STACKTRACE; frame_step += frame_time; ! while (frame_step >= frame_size) { frame_step -= frame_size; sprite_index++; --- 451,456 ---- STACKTRACE; frame_step += frame_time; ! while (frame_step >= frame_size) ! { frame_step -= frame_size; sprite_index++; *************** *** 432,447 **** life += frame_time; ! if(life >= lifetime) { ! state = 0; return; } ! double a = trajectory_angle(target); ! vel = v * unit_vector(a); SpaceObject::calculate(); - if (!target) - die(); } --- 459,488 ---- life += frame_time; ! if(life >= lifetime) ! { ! die(); return; } ! if (!target) ! { ! die(); ! return; ! } ! ! double a = trajectory_angle(target) - angle; ! while (a < -PI) a += PI2; ! while (a > PI) a -= PI2; ! // between -PI and +PI ! ! if (a < 0) ! angle -= turnrate; ! else ! angle += turnrate; ! ! accelerate(this, angle, accelrate, maxvelocity); SpaceObject::calculate(); } Index: shpscain.cpp =================================================================== RCS file: /cvsroot/timewarp/source/ppiships/shpscain.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shpscain.cpp 29 Jan 2006 16:14:34 -0000 1.1 --- shpscain.cpp 20 Feb 2006 23:04:35 -0000 1.2 *************** *** 4,16 **** REGISTER_FILE - #include "../other/lightning.h" - /** Copy of the Korvian Sniper ! Lightning taken from Narool Lurker */ - void draw_lightning(Vector2 lightningrelpos, int sparktime, int maxsparktime, int Rmax, - BITMAP *lightningbmp, BITMAP *shpbmp, Frame *space, - Vector2 plot_pos, Vector2 plot_size); class ScavengerInterloper : public Ship { --- 4,11 ---- REGISTER_FILE /** Copy of the Korvian Sniper ! Extra quirk is after the Narool Lurker */ class ScavengerInterloper : public Ship { *************** *** 27,38 **** double SkipperMaxAngle; ! int cloak; ! int cloak_frame; ! ! Lightning lightning; public: - static int cloak_color[3]; ScavengerInterloper(Vector2 opos, double angle, ShipData *data, unsigned int code); --- 22,36 ---- double SkipperMaxAngle; ! bool cloak; ! // visible after taking damage ! int visible_time, visible_period; ! ! // bright flare after shooting ! int flare_time; ! ! public: ScavengerInterloper(Vector2 opos, double angle, ShipData *data, unsigned int code); *************** *** 44,48 **** virtual void animate(Frame *space); - // add code to activate the sparks virtual void inflict_damage(SpaceObject *other); }; --- 42,45 ---- *************** *** 93,112 **** ! cloak = TRUE; debug_id = 1009; - BITMAP *shpbmp = sprite->get_bitmap(0); - double maxsparktime = get_config_float("Quirk", "maxsparktime", 2000); - double Rmax = get_config_float("Quirk", "Rmax", 1); - lightning.init(shpbmp, 0, maxsparktime, Rmax); } double ScavengerInterloper::isInvisible() const { ! if (lightning.visible()) ! return 0; ! else ! return 1; ! } --- 90,104 ---- ! cloak = true; debug_id = 1009; + visible_time = 0; + visible_period = get_config_int("Quirk", "VisiblePeriod", 1000); + flare_time = get_config_int("Quirk", "FlareTime", 100); } double ScavengerInterloper::isInvisible() const { ! return cloak; } *************** *** 114,123 **** { ! game->add(new ScavengerInterloperMissile( Vector2(0.0, size.y / 2.0), angle, weaponVelocity, weaponDamage, weaponRange, weaponArmour, ! this, data->spriteWeapon)); play_sound2(data->sampleWeapon[0]); return TRUE; } --- 106,127 ---- { ! Vector2 dP = Vector2(0.0, 0.7*size.y); ! ! ScavengerInterloperMissile *m; ! m = new ScavengerInterloperMissile( dP, angle, weaponVelocity, weaponDamage, weaponRange, weaponArmour, ! this, data->spriteWeapon); ! game->add(m); play_sound2(data->sampleWeapon[0]); + // when a weapon is fired, also add a bright flash to the game: + SpaceSprite *spr = data->spriteWeaponExplosion; + Animation *a = new Animation(this, m->pos, spr, + 0, spr->frames(), flare_time, DEPTH_EXPLOSIONS); + + targets->add(a); + game->add(a); + return TRUE; } *************** *** 126,132 **** int ScavengerInterloper::activate_special() { ! game->add(new SkipperMissile( Vector2(0.0, size.y / 2.0), angle, specialVelocity, specialDamage, specialRange, specialArmour, ! this, data->spriteSpecial, SkipperPeriod, VisiblePeriod, SkipperMaxAngle)); return TRUE; --- 130,144 ---- int ScavengerInterloper::activate_special() { ! SkipperMissile *m = new SkipperMissile( Vector2(0.0, 0.7*size.y), angle, specialVelocity, specialDamage, specialRange, specialArmour, ! this, data->spriteSpecial, SkipperPeriod, VisiblePeriod, SkipperMaxAngle); ! game->add(m); ! ! SpaceSprite *spr = data->spriteSpecialExplosion; ! Animation *a = new Animation(this, m->pos, spr, ! 0, spr->frames(), flare_time, DEPTH_EXPLOSIONS); ! ! targets->add(a); ! game->add(a); return TRUE; *************** *** 144,148 **** { ! lightning.update(frame_time); Ship::calculate(); --- 156,170 ---- { ! ! if (visible_time > 0) ! { ! cloak = false; ! ! visible_time -= frame_time; ! if (visible_time < 0) ! visible_time = 0; ! } else { ! cloak = true; ! } Ship::calculate(); *************** *** 154,162 **** if (!show_red_cloaker || (control && is_bot(control->channel)) || (control && !is_local(control->channel)) || (!game_networked && num_network>1)) // bots and remote players are "hidden" { ! #ifdef _DEBUG ! sprite->animate_character( pos, sprite_index, pallete_color[4], space); ! #else ! sprite->animate_character( pos, sprite_index, pallete_color[255], space); ! #endif } else --- 176,188 ---- if (!show_red_cloaker || (control && is_bot(control->channel)) || (control && !is_local(control->channel)) || (!game_networked && num_network>1)) // bots and remote players are "hidden" { ! //#ifdef _DEBUG ! // // in debug mode, show where the enem ! // sprite->animate_character( pos, sprite_index, pallete_color[4], space); ! //#else ! if (cloak) ! sprite->animate_character( pos, sprite_index, pallete_color[255], space); ! else ! sprite->animate_character( pos, sprite_index, pallete_color[15], space); ! //#endif } else *************** *** 166,170 **** return; ! } --- 192,196 ---- return; ! } *************** *** 175,188 **** Ship::inflict_damage(other); //you've hit something; (re)activate sparks. ! lightning.reset(); // but, where did you hit it ? // place the source somewhere... at the edge .. how ? ! double a, R; ! a = trajectory_angle(other); ! R = 20; ! lightning.locate(R * unit_vector(a)); } --- 201,218 ---- Ship::inflict_damage(other); + // after hitting something, the ship should become visible. + visible_time = visible_period; + cloak = false; + //you've hit something; (re)activate sparks. ! //lightning.reset(); // but, where did you hit it ? // place the source somewhere... at the edge .. how ? ! // double a, R; ! // a = trajectory_angle(other); ! // R = 20; ! // lightning.locate(R * unit_vector(a)); } Index: shpalabo.cpp =================================================================== RCS file: /cvsroot/timewarp/source/ppiships/shpalabo.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpalabo.cpp 29 Jan 2006 18:33:58 -0000 1.2 --- shpalabo.cpp 20 Feb 2006 23:04:35 -0000 1.3 *************** *** 17,20 **** --- 17,21 ---- double bombDamageMin, bombDamageMax, bombArmour; double bombProximity, bombBlastRange, bombKick; + double bombDrag; double special_speedmax, special_accelrate; *************** *** 22,25 **** --- 23,29 ---- bool can_launch_bomb; + bool gun_use; + double gun_v, gun_damage, gun_range, gun_armour; + public: AlaryBomber (Vector2 opos, double shipAngle, *************** *** 41,44 **** --- 45,50 ---- //int rotation_index; double blast_damage_max, blast_damage_min, lifetime; + + double drag_factor; //double rotation_angle; SpaceObject *tgt; *************** *** 48,52 **** AlaryBomberBomb (SpaceLocation *creator, double ox, double oy, double oangle, double odamage_min, double odamage_max, double oarmour, SpaceSprite *osprite, double oblast_range, double oproximity, ! int olifetime, double okick); virtual void calculate(); virtual void animate(Frame *space); --- 54,58 ---- AlaryBomberBomb (SpaceLocation *creator, double ox, double oy, double oangle, double odamage_min, double odamage_max, double oarmour, SpaceSprite *osprite, double oblast_range, double oproximity, ! int olifetime, double okick, double drag); virtual void calculate(); virtual void animate(Frame *space); *************** *** 81,88 **** --- 87,102 ---- bombBlastRange = scale_range(get_config_float("Bomb", "BlastRange", 0)); bombKick = scale_velocity(get_config_float("Bomb", "Kick", 0)); + bombDrag = get_config_float("Bomb", "Drag", 0.01); special_speedmax = scale_velocity(get_config_float("Afterburn", "SpeedMax", 10.0)); special_accelrate = scale_acceleration(get_config_float("Afterburn", "AccelRate", 10.0)); + + gun_use = get_config_int("Gun", "Use", 0) != 0; + gun_v = scale_velocity(get_config_float("Gun", "Velocity", 10.0) ); + gun_range = scale_range( get_config_float("Gun", "Range", 1.0) ); + gun_damage = get_config_float("Gun", "Damage", 1.0); + gun_armour = get_config_float("Gun", "Armour", 1.0); + can_launch_bomb = true; *************** *** 94,98 **** if (!can_launch_bomb) return false; add(new AlaryBomberBomb(this, 0, 0, angle, bombDamageMin, bombDamageMax, bombArmour, data->spriteWeapon, ! bombBlastRange, bombProximity, bombLifetime, bombKick)); can_launch_bomb = false; return true; --- 108,112 ---- if (!can_launch_bomb) return false; add(new AlaryBomberBomb(this, 0, 0, angle, bombDamageMin, bombDamageMax, bombArmour, data->spriteWeapon, ! bombBlastRange, bombProximity, bombLifetime, bombKick, bombDrag)); can_launch_bomb = false; return true; *************** *** 103,108 **** STACKTRACE; ! // just some kind of afterburn ! accelerate(this, angle, special_accelrate * frame_time, special_speedmax); return true; --- 117,130 ---- STACKTRACE; ! if (!gun_use) ! { ! // just some kind of afterburn ! accelerate(this, angle, special_accelrate * frame_time, special_speedmax); ! } else { ! add(new AnimatedShot(this, Vector2(0,60), angle, ! gun_v, gun_damage, gun_range, gun_armour, ! this, data->spriteSpecial, data->spriteSpecial->frames(), 0, 0.0) ! ); ! } return true; *************** *** 115,119 **** Ship::calculate_hotspots(); ! if (this->fire_special) { Vector2 D = -17*unit_vector(angle+0.5*PI); --- 137,141 ---- Ship::calculate_hotspots(); ! if (this->fire_special && !gun_use) { Vector2 D = -17*unit_vector(angle+0.5*PI); *************** *** 143,147 **** double odamage_max, double oarmour, SpaceSprite *osprite, double oblast_range, double oproximity, ! int olifetime, double okick) : Missile(creator, Vector2(ox, oy), oangle, 0, odamage_max, 1e40, oarmour, creator, osprite, 1.0), --- 165,169 ---- double odamage_max, double oarmour, SpaceSprite *osprite, double oblast_range, double oproximity, ! int olifetime, double okick, double drag) : Missile(creator, Vector2(ox, oy), oangle, 0, odamage_max, 1e40, oarmour, creator, osprite, 1.0), *************** *** 154,158 **** lifetime(olifetime), tgt(NULL), ! active(false) { id = SPACE_OBJECT; --- 176,181 ---- lifetime(olifetime), tgt(NULL), ! active(false), ! drag_factor(drag) { id = SPACE_OBJECT; *************** *** 197,206 **** // explode at the end of its life if (lifetime > 0) lifetime -= frame_time; ! else ! damage(this, 999); ! // the original Tau Bomber checked it neighbourhood in order to detonate the bomb, however, it's far more // efficient to scan only the target. --- 220,236 ---- // explode at the end of its life if (lifetime > 0) + { lifetime -= frame_time; ! } else { ! if (ship && distance(ship) > proximity_range) ! { ! damage(this, 999); ! } else { ! die(); ! } ! } ! // the original Tau Bomber checked its neighbourhood in order to detonate the bomb, however, it's far more // efficient to scan only the target. *************** *** 216,223 **** --- 246,255 ---- damage(this, 9999); } + // otherwise, just keep flying. } } old_range = r0; + scale_vel(1 - drag_factor); } *************** *** 263,271 **** damage(q.currento, d); if ((q.currento->mass > 0) && (!q.currento->isPlanet())) q.currento->accelerate(this, trajectory_angle(q.currento), kick * r / ((q.currento->mass > 1)?sqrt(q.currento->mass):1), MAX_SPEED); } ! add(new AlaryBomberBombExplosion(pos, scale_velocity(70), 150, 450, makecol(255,240,140))); } --- 295,306 ---- damage(q.currento, d); + + if ((q.currento->mass > 0) && (!q.currento->isPlanet())) q.currento->accelerate(this, trajectory_angle(q.currento), kick * r / ((q.currento->mass > 1)?sqrt(q.currento->mass):1), MAX_SPEED); + } ! add(new AlaryBomberBombExplosion(pos, scale_velocity(70), 150, 350, makecol(255,240,140))); } |
From: Rob <geo...@us...> - 2006-02-20 23:02:22
|
Update of /cvsroot/timewarp/ships/ppi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24651/ships/ppi Modified Files: shpalabo.ini shpchmba.ini shpfrebo.ini shpgluse.ini shpostor.ini shpsacda.ini shpscain.ini shpsefna.dat shpsefna.ini shpstrgu.ini shptauhu.ini shputwde.ini Log Message: MRT ship tweak update Index: shpsefna.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpsefna.ini,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shpsefna.ini 29 Jan 2006 16:27:43 -0000 1.1 --- shpsefna.ini 20 Feb 2006 23:02:05 -0000 1.2 *************** *** 6,64 **** Name1 = (PPI) Sefy Name2 = Nautilus ! Coders = GeomanNL-Jad ! Code = SefyNautilus2 [Ship] Crew = 16 CrewMax = 16 Batt = 20 BattMax = 20 ! ; even slower than a vux: ! SpeedMax = 25 AccelRate = 3 ! TurnRate = 2.0 RechargeAmount = 1 ! RechargeRate = 5 ! WeaponDrain = 1 WeaponRate = 1 ! SpecialDrain = 3 ! SpecialRate = 15 HotspotRate = 1 Mass = 10 [Weapon] ! MaxDamage = 1 ! MinDamage = 1 ! ! [Arms] ! ArmMaxAngle = 100 ; in degree ! OpenArmTime = 1.0 ; in seconds ! SnapArmTime = 0.13 ! ; difference between the two determines the number of snaps you'll get [Special] ! RelVelocity = 1.0 ; how long it exists, in seconds LifeTime = 30.0 ; delay for unrolling 1 node of the rope (50 nodes for full length) ! ;Delay = 0.25 ! Delay = 0.10 OscFreq = 25.0 SegLength = 0.1 ; no problem if this is small Armour = 5.0 ! ;SprConst = 500.0 ! SprConst = 650.0 ! SnagAsteroids = 1 ! ;250.0 ! [AI3_Default] ! Weapon_Range = 5 ! Weapon = Precedence ! WeaponRel = 0.0 ! Special_Range = 30 ! Special = Narrow ! SpecialRel = 0.0 [Names] --- 6,67 ---- Name1 = (PPI) Sefy Name2 = Nautilus ! Coders = GeomanNL ! Code = SefyNautilus [Ship] Crew = 16 CrewMax = 16 + Batt = 20 BattMax = 20 ! ! SpeedMax = 23 AccelRate = 3 ! TurnRate = 3 ! RechargeAmount = 1 ! RechargeRate = 7 ! ! WeaponDrain = 2 WeaponRate = 1 ! ! SpecialDrain = 4 ! SpecialRate = 10 ! HotspotRate = 1 Mass = 10 [Weapon] ! ; a few lasers? ! Color = 15 ! Frames = 100 ! Range = 2.0 ! Damage = 1 [Special] ! ! ; hook velocity, relative to the ship ! Velocity = 90 ! ; how long it exists, in seconds LifeTime = 30.0 + ; delay for unrolling 1 node of the rope (50 nodes for full length) ! Delay = 0.25 OscFreq = 25.0 SegLength = 0.1 ; no problem if this is small Armour = 5.0 ! SprConst = 500.0 + ; if the hook hits the enemy, its turnrate is lowered by this factor + ; A couple of hits will make the enemy quite vulnerable. + TurnRateFactor = 0.8 ! Damage = 1 + [AI3_Default] + Weapon = Missile + Special = Attack + SpecialFreq = 3 [Names] Index: shpalabo.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpalabo.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpalabo.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpalabo.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 1,4 **** [Info] ! TWCost = 8 Name1 = (PPI) Alary Name2 = Bomber --- 1,4 ---- [Info] ! TWCost = 17 Name1 = (PPI) Alary Name2 = Bomber *************** *** 9,32 **** [Ship] ! Crew = 16 ! CrewMax = 16 ! Batt = 20 ! BattMax = 20 ! SpeedMax = 30 ! AccelRate = 10 ! TurnRate = 4 RechargeAmount = 1 RechargeRate = 9 ! WeaponDrain = 8 WeaponRate = 6 ! SpecialDrain = 2 SpecialRate = 0 HotspotRate = 2 Mass = 11.5 --- 9,37 ---- [Ship] ! Crew = 20 ! CrewMax = 20 ! Batt = 14 ! BattMax = 14 ! SpeedMax = 40 ;34 ! AccelRate = 60 ! TurnRate = 3 RechargeAmount = 1 RechargeRate = 9 ! WeaponDrain = 4 WeaponRate = 6 ! ; for the afterburn, use these settings: ! SpecialDrain = 1 SpecialRate = 0 + ; for the gun, use these settings: + ;SpecialDrain = 2 + ;SpecialRate = 0 + HotspotRate = 2 Mass = 11.5 *************** *** 34,54 **** [Bomb] ! Lifetime = 5 ! # the bomb won't explode if it's in this proximity range ! Proximity = 5 ! # deal damage to everything in this range ! BlastRange = 6 ! # damage at edge DamageMin = 1 ! # damage at center ! DamageMax = 3 ! Armour = 3 ! Kick = 120 [Afterburn] ! SpeedMax = 52 ! AccelRate = 30 --- 39,72 ---- [Bomb] ! Lifetime = 8 ! ; the bomb won't explode if it's in this proximity range ! Proximity = 6 ! ; deal damage to everything in this range ! BlastRange = 5 ! ; damage at edge DamageMin = 1 ! ; damage at center ! DamageMax = 6 ! Armour = 2 ! Kick = 0 ;120 ! ! ; fractional reduction per frame ! Drag = 0.002 [Afterburn] ! SpeedMax = 62 ! AccelRate = 10 ! ! [Gun] ! ! ; 1=used, 0=disabled (afterburn instead) ! Use = 0 ! Velocity = 100 ! Range = 6 ! Damage = 1 ! Armour = 1 ! Index: shptauhu.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shptauhu.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shptauhu.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shptauhu.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 1,9 **** [Info] Origin = TWb ! TWCost = 22 Name1 = (PPI) Tau Name2 = Hunter Coders = Tau ! Code = TauHunter [Ship] --- 1,9 ---- [Info] Origin = TWb ! TWCost = 20 Name1 = (PPI) Tau Name2 = Hunter Coders = Tau ! Code = TauHunterPPI [Ship] *************** *** 20,29 **** RechargeAmount = 1 ! RechargeRate = 1 ! WeaponDrain = 4 ! WeaponRate = 1 ! SpecialDrain = 8 SpecialRate = 16 --- 20,29 ---- RechargeAmount = 1 ! RechargeRate = 2 ! WeaponDrain = 3 ! WeaponRate = 2 ! SpecialDrain = 16 SpecialRate = 16 *************** *** 43,60 **** [Special] ! Range = 4.0 ! Velocity = 90 ! Damage = 0 ! Armour = 4 ! RechargeDelay = 0 [Extra] ! Velocity = 54 ! Drain = 4 ! ExitVelocityFactor = 1.0 ! CriticalAngle = 30 ! CriticalRange = 40 ! FrameTime = 25 ! RechargeDelay = 0 --- 43,58 ---- [Special] ! ; nothing under special [Extra] ! ; speed in jumpspace ! Velocity = 70 ! ! ; fraction of ship max speed on exit ! ExitVelocityFactor = 0.6 + ; how long you can spend in jumpspace before returning (ms) + JumpTime = 1000 + ; get into jump using ship orientation (0), or velocity vector (1) + SlidingEntry = 1 Index: shpsacda.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpsacda.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpsacda.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpsacda.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 10,15 **** Crew = 8 CrewMax = 8 ! Batt = 10 ! BattMax = 10 SpeedMax = 55 --- 10,15 ---- Crew = 8 CrewMax = 8 ! Batt = 12 ! BattMax = 12 SpeedMax = 55 *************** *** 22,28 **** WeaponDrain = 2 ! WeaponRate = 1 ! SpecialDrain = 10 SpecialRate = 4 --- 22,28 ---- WeaponDrain = 2 ! WeaponRate = 0 ! SpecialDrain = 12 SpecialRate = 4 *************** *** 38,42 **** Range = 12 Velocity = 90 ! Damage = 2 Armour = 3 ! Recoil = 40 --- 38,42 ---- Range = 12 Velocity = 90 ! Damage = 3 Armour = 3 ! Recoil = 55 \ No newline at end of file Index: shpstrgu.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpstrgu.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpstrgu.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpstrgu.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 15,19 **** BattMax = 18 ! SpeedMax = 26 AccelRate = 7 TurnRate = 3 --- 15,19 ---- BattMax = 18 ! SpeedMax = 32 AccelRate = 7 TurnRate = 3 *************** *** 23,27 **** WeaponDrain = 4 ! WeaponRate = 5 SpecialDrain = 10 --- 23,27 ---- WeaponDrain = 4 ! WeaponRate = 3 SpecialDrain = 10 Index: shpgluse.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpgluse.ini,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shpgluse.ini 29 Jan 2006 16:27:43 -0000 1.1 --- shpgluse.ini 20 Feb 2006 23:02:05 -0000 1.2 *************** *** 15,29 **** AccelRate = 5 TurnRate = 2 RechargeAmount = 2 RechargeRate = 13 ! WeaponDrain = 3 ! WeaponRate = 4 SpecialDrain = 6 SpecialRate = 6 HotspotRate = 0 Mass = 22 [Weapon] ! Range = 35 Velocity = 100 Damage = 1 --- 15,33 ---- AccelRate = 5 TurnRate = 2 + RechargeAmount = 2 RechargeRate = 13 ! ! WeaponDrain = 2 ! WeaponRate = 3 ! SpecialDrain = 6 SpecialRate = 6 + HotspotRate = 0 Mass = 22 [Weapon] ! Range = 25 Velocity = 100 Damage = 1 Index: shpsefna.dat =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpsefna.dat,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs79EsJZ and /tmp/cvsqCj5cO differ Index: shputwde.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shputwde.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shputwde.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shputwde.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 14,29 **** CrewMax = 16 ! Batt = 20 ! BattMax = 20 ! SpeedMax = 36 AccelRate = 10 ! TurnRate = 2 RechargeAmount = 1 RechargeRate = 7 ! WeaponDrain = 4 ! WeaponRate = 10 ! SpecialDrain = 10 SpecialRate = 10 --- 14,29 ---- CrewMax = 16 ! Batt = 6 ! BattMax = 6 ! SpeedMax = 40 AccelRate = 10 ! TurnRate = 3 RechargeAmount = 1 RechargeRate = 7 ! WeaponDrain = 1 ! WeaponRate = 1 ! SpecialDrain = 6 SpecialRate = 10 *************** *** 43,51 **** Relativity = 0.0 ! DamageMin = 2 ! DamageMax = 6 ! ArmourMin = 4 ! ArmourMax = 8 Recoil = 0 --- 43,51 ---- Relativity = 0.0 ! DamageMin = 1 ! DamageMax = 4 ! ArmourMin = 1 ! ArmourMax = 3 Recoil = 0 *************** *** 53,57 **** [Special] ! Velocity = 18 ; crew are present till 20 seconds after their release Frames = 20000 --- 53,60 ---- [Special] ! Velocity = 30 ! TurnRate = 5 ! AccelRate = 6 ! ; crew are present till 20 seconds after their release Frames = 20000 Index: shpfrebo.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpfrebo.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpfrebo.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpfrebo.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 1,4 **** [Info] ! TWCost = 19 Name1 = (PPI) Frein Name2 = Boomerang --- 1,4 ---- [Info] ! TWCost = 14 Name1 = (PPI) Frein Name2 = Boomerang Index: shpostor.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpostor.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpostor.ini 29 Jan 2006 18:58:30 -0000 1.3 --- shpostor.ini 20 Feb 2006 23:02:05 -0000 1.4 *************** *** 1,4 **** [Info] ! TWCost = 18 Name1 = (PPI) Ostok Name2 = Orion --- 1,4 ---- [Info] ! TWCost = 14 Name1 = (PPI) Ostok Name2 = Orion *************** *** 60,65 **** Velocity = 20 Lifetime = 1 ! BlastRange = 6 ! Damage = 5 Armour = 3 Kick = 60 --- 60,65 ---- Velocity = 20 Lifetime = 1 ! BlastRange = 4 ! Damage = 4 Armour = 3 Kick = 60 Index: shpchmba.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpchmba.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpchmba.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpchmba.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 22,26 **** WeaponDrain = 5 ! WeaponRate = 3 SpecialDrain = 2 --- 22,26 ---- WeaponDrain = 5 ! WeaponRate = 4 SpecialDrain = 2 *************** *** 31,35 **** [Weapon] ! Range = 34 Velocity = 100 Damage = 2 --- 31,35 ---- [Weapon] ! Range = 25 Velocity = 100 Damage = 2 Index: shpscain.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpscain.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpscain.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpscain.ini 20 Feb 2006 23:02:05 -0000 1.3 *************** *** 9,29 **** [Ship] ! Crew = 8 ! CrewMax = 8 ! Batt = 10 ! BattMax = 10 ! SpeedMax = 17 ! AccelRate = 8 ! TurnRate = 2 RechargeAmount = 1 RechargeRate = 4 ! WeaponDrain = 8 WeaponRate = 1 ! SpecialDrain = 10 SpecialRate = 2 --- 9,29 ---- [Ship] ! Crew = 10 ! CrewMax = 10 ! Batt = 8 ! BattMax = 8 ! SpeedMax = 14 ! AccelRate = 1 ! TurnRate = 8 RechargeAmount = 1 RechargeRate = 4 ! WeaponDrain = 6 WeaponRate = 1 ! SpecialDrain = 8 SpecialRate = 2 *************** *** 32,36 **** [Weapon] ! Range = 40 Velocity = 200 Damage = 2 --- 32,36 ---- [Weapon] ! Range = 30 Velocity = 200 Damage = 2 *************** *** 38,61 **** [Special] ! Range = 60 ! Velocity = 50 Damage = 1 Armour = 2 ! # delay between aim-seek, in ms. ! SkipperPeriod = 500 ! # visible for this many ms during seek ! VisiblePeriod = 100 ! #max angle change (degrees) ! MaxAngle = 45 [Quirk] ! maxsparktime = 2000 ! Rmax = 75 [AI3_Default] Tactic = Range ! Tactic_Min = 30 ! Tactic_Max = 60 Weapon = Narrow --- 38,63 ---- [Special] ! Range = 40 ! Velocity = 40 Damage = 1 Armour = 2 ! ; delay between aim-seek, in ms. ! SkipperPeriod = 1000 ! ; visible for this many ms during seek ! VisiblePeriod = 250 ! ;max angle change (degrees): each visible interval, it can change its trajectory by this value. ! MaxAngle = 20 [Quirk] ! ; this long visible after the ship has been hit (ms) ! VisiblePeriod = 5 ! ; time (ms) per frame that a flare lasts ! FlareTime = 100 [AI3_Default] Tactic = Range ! Tactic_Min = 20 ! Tactic_Max = 40 Weapon = Narrow |
From: Rob <geo...@us...> - 2006-01-29 21:06:25
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18068/source/melee Modified Files: mshpdata.cpp msprite.cpp Log Message: Index: msprite.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/msprite.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** msprite.cpp 29 Jan 2006 16:14:34 -0000 1.30 --- msprite.cpp 29 Jan 2006 21:06:15 -0000 1.31 *************** *** 1381,1382 **** --- 1381,1403 ---- } + + + + + + BITMAP* copybmp( BITMAP* src ) + { + STACKTRACE; + + BITMAP *dest; + + // copied from vanguard + dest = create_bitmap_ex(bitmap_color_depth(screen), src->w, src->h); //Create a new bitmap + if(!dest) return NULL; //If failed, return NULL + + blit(src, dest, 0, 0, 0, 0, src->w, src->h); //Copy bitmap from datafile + + return dest; + } + + Index: mshpdata.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mshpdata.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** mshpdata.cpp 29 Jan 2006 16:14:34 -0000 1.17 --- mshpdata.cpp 29 Jan 2006 21:06:15 -0000 1.18 *************** *** 756,762 **** else sampleExtra = NULL; - shipdatas_loaded += 1; - status = LOADED_FULL; - // all data is copied, so now, you can discard the original data file ! pop_config_state(); --- 756,759 ---- *************** *** 844,850 **** - shipdatas_loaded += 1; - status = LOADED_FULL; - // all data is copied, so now, you can discard the original data file ! pop_config_state(); --- 841,844 ---- *************** *** 876,879 **** --- 870,875 ---- } + shipdatas_loaded += 1; + status = LOADED_FULL; } |
From: Rob <geo...@us...> - 2006-01-29 21:06:24
|
Update of /cvsroot/timewarp/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18068/source Modified Files: melee.h Log Message: Index: melee.h =================================================================== RCS file: /cvsroot/timewarp/source/melee.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** melee.h 29 Jan 2006 16:14:33 -0000 1.29 --- melee.h 29 Jan 2006 21:06:15 -0000 1.30 *************** *** 424,427 **** --- 424,428 ---- void animate_bmp(BITMAP *bmp, Vector2 pos, Frame *space); + BITMAP* copybmp( BITMAP* src ); class SpaceSprite { |
From: Rob <geo...@us...> - 2006-01-29 21:06:24
|
Update of /cvsroot/timewarp/source/games In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18068/source/games Modified Files: gflmelee.cpp gsc1arena.cpp Log Message: Index: gflmelee.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gflmelee.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** gflmelee.cpp 3 Sep 2005 19:49:44 -0000 1.31 --- gflmelee.cpp 29 Jan 2006 21:06:15 -0000 1.32 *************** *** 1583,1600 **** - BITMAP* copybmp( BITMAP* src ) - { - STACKTRACE; - - BITMAP *dest; - - // copied from vanguard - dest = create_bitmap_ex(bitmap_color_depth(screen), src->w, src->h); //Create a new bitmap - if(!dest) return NULL; //If failed, return NULL - - blit(src, dest, 0, 0, 0, 0, src->w, src->h); //Copy bitmap from datafile - - return dest; - } --- 1583,1586 ---- Index: gsc1arena.cpp =================================================================== RCS file: /cvsroot/timewarp/source/games/gsc1arena.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gsc1arena.cpp 11 Jul 2005 18:31:03 -0000 1.1 --- gsc1arena.cpp 29 Jan 2006 21:06:15 -0000 1.2 *************** *** 72,75 **** --- 72,82 ---- virtual void register_events(); + + + Ship *last_playership[max_players]; + BITMAP *bmp_show[128]; + void menu_data_init(NPI *player); + void menu_data_cleanup(NPI *player); + bool menu_data_initialized; }; *************** *** 88,91 **** --- 95,99 ---- + // set the anti-alias to 0: int antia_on = get_config_int(NULL, "Anti-AliasingOn",0);; *************** *** 233,236 **** --- 241,249 ---- + menu_data_initialized = false; + for ( i = 0; i < num_players; ++i ) + { + last_playership[i] = 0; + } } *************** *** 253,256 **** --- 266,313 ---- + void SC1Arena::menu_data_init(NPI *player) + { + int i; + + if (player->fleet->getSize() > 32) + { + tw_error("There are too many ships in this fleet for display"); + } + + for ( i = 0; i < player->fleet->getSize(); ++i ) + { + ShipType *t; + t = player->fleet->getShipType(i); + + + // temp load data + if (!t->data->islocked()) + t->data->load(); + + bmp_show[i] = copybmp( t->data->spriteShip->get_bitmap(0) ); + + // unload the temp data right away + if (!t->data->islocked()) + t->data->unload(); + + } + + menu_data_initialized = true; + } + + + void SC1Arena::menu_data_cleanup(NPI *player) + { + int i; + + for ( i = 0; i < player->fleet->getSize(); ++i ) + { + destroy_bitmap(bmp_show[i]); + } + + menu_data_initialized = false; + } + + void SC1Arena::animate( Frame* frame ) { *************** *** 260,302 **** Game::animate( frame ); - FULL_REDRAW = false; ! // if a local player has to choose a new ship... ! int p; ! for ( p = 0; p < num_network; ++p ) { ! if (!player[p]) ! continue; ! ! if (player[p]->islocal() && !playership[p]) { ! FULL_REDRAW = true; ! int xpos = 10; ! int ypos = screen->h / 2; ! // show all ships that are still available to you ! int i; ! for ( i = 0; i < player[p]->fleet->getSize(); ++i ) { ! ShipType *t; ! t = player[p]->fleet->getShipType(i); ! ! if (!t->data->islocked()) ! t->data->load(); ! ! BITMAP *bmp = t->data->spriteShip->get_bitmap(0); ! masked_blit(bmp, frame->surface, 0, 0, xpos, ypos, bmp->w, bmp->h); ! if (i == player_shipchoice) { ! rect(frame->surface, xpos, ypos, xpos+bmp->w-1, ypos+bmp->h-1, makecol(200,200,200)); } - - xpos += bmp->w + 5; - } } - } } --- 317,362 ---- Game::animate( frame ); ! if (menu_data_initialized) { ! FULL_REDRAW = false; ! ! // if a local player has to choose a new ship... ! int p; ! for ( p = 0; p < num_network; ++p ) { ! if (!player[p]) ! continue; ! if (player[p]->islocal() && !playership[p]) { ! FULL_REDRAW = true; ! int xpos = 10; ! int ypos = screen->h / 2; ! // show all ships that are still available to you ! int i; ! for ( i = 0; i < player[p]->fleet->getSize(); ++i ) { ! //ShipType *t; ! //t = player[p]->fleet->getShipType(i); ! ! BITMAP *bmp = bmp_show[i]; ! masked_blit(bmp, frame->surface, 0, 0, xpos, ypos, bmp->w, bmp->h); ! ! if (i == player_shipchoice) ! { ! rect(frame->surface, xpos, ypos, xpos+bmp->w-1, ypos+bmp->h-1, makecol(200,200,200)); ! } ! ! xpos += bmp->w + 5; ! } } + } } + + } *************** *** 561,564 **** --- 621,629 ---- if (playership[i] && !playership[i]->exists()) playership[i] = 0; + + } + + for ( i = 0; i < num_players; ++i ) + { // bots: these should choose a new ship randomly *************** *** 598,603 **** continue; ! if (player[p]->islocal() && !playership[p]) { int keys = player[p]->control->keys; --- 663,694 ---- continue; ! ! ! if (player[p]->islocal() && (!playership[p] || !last_playership[p])) { + // check change in the state of your player ship + if (menu_data_initialized == false) + { + // it's time to reinitialize the menu + if (!playership[p]) + { + // initialize. + menu_data_init(player[p]); + } + + } else { + + // detect if a ship is chosen + // otherwise, don't clean it up yet... + if (playership[p] && !last_playership[p]) + { + // clean it up. + menu_data_cleanup(player[p]); + } + } + // it's been used for detection, that's all you need. + last_playership[p] = playership[p]; + + int keys = player[p]->control->keys; *************** *** 643,646 **** --- 734,739 ---- } } + + } |
From: Rob <geo...@us...> - 2006-01-29 18:58:39
|
Update of /cvsroot/timewarp/ships/ppi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6046/ships/ppi Modified Files: shpostor.ini Log Message: Index: shpostor.ini =================================================================== RCS file: /cvsroot/timewarp/ships/ppi/shpostor.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpostor.ini 29 Jan 2006 18:33:18 -0000 1.2 --- shpostor.ini 29 Jan 2006 18:58:30 -0000 1.3 *************** *** 1,6 **** [Info] ! SC1Cost = 18 ! SC2Cost = 18 ! TWCost = 10 Name1 = (PPI) Ostok Name2 = Orion --- 1,4 ---- [Info] ! TWCost = 18 Name1 = (PPI) Ostok Name2 = Orion |