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...> - 2005-07-17 12:48:01
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29985/ships Modified Files: shpstaba.dat Log Message: includes new ship panels sprites by Deeko Index: shpstaba.dat =================================================================== RCS file: /cvsroot/timewarp/ships/shpstaba.dat,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 Binary files /tmp/cvsfYt34D and /tmp/cvsU3Skis differ |
From: Rob <geo...@us...> - 2005-07-16 23:49:00
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32002/source/melee Modified Files: mship.cpp Log Message: fix to control-override list management Index: mship.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mship.cpp,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** mship.cpp 11 Jul 2005 21:57:19 -0000 1.34 --- mship.cpp 16 Jul 2005 23:48:51 -0000 1.35 *************** *** 477,481 **** if (first_override_control) { ! tw_error("Ship deleted before all control overrides are removed..."); } } --- 477,494 ---- if (first_override_control) { ! //tw_error("Ship deleted before all control overrides are removed..."); ! // if you interrupt a game while some ship is under someones control, this can happen... ! ! OverrideControl *c, *cnext; ! c = first_override_control; ! while (c) ! { ! cnext = c->next; ! delete c; ! c = cnext; ! } ! ! first_override_control = 0; ! last_override_control = 0; } } *************** *** 1153,1157 **** if (!c) { ! tw_error("Error: trying to remove a control override that is not present in the list"); } else { --- 1166,1172 ---- if (!c) { ! //tw_error("Error: trying to remove a control override that is not present in the list"); ! // this is possible, if you interrupt a game while someones ship is under control... so, don't ! // worry about it. Enable it for debugging. } else { |
From: Rob <geo...@us...> - 2005-07-16 23:48:39
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31970/source/melee Modified Files: mmain.cpp Log Message: "fix" to game-end message Index: mmain.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mmain.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** mmain.cpp 11 Jul 2005 00:25:28 -0000 1.39 --- mmain.cpp 16 Jul 2005 23:48:30 -0000 1.40 *************** *** 1215,1218 **** --- 1215,1224 ---- void NormalGame::handle_end() { + + // the following is a bit messy procedure... the idea is that all players can enter a choice at the + // end of a melee game. But ehm... well, it's messy as I said, it takes bots not into account. + // safer to leave it out. + + /* // pause all players, so that networking sends are only within this routine !! pause(); *************** *** 1333,1336 **** --- 1339,1349 ---- unpause(); + + */ + + + tw_alert("The End", "&OK"); + + quit("none"); } |
From: Rob <geo...@us...> - 2005-07-16 23:47:31
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31840/source/newships Modified Files: shpneccr.cpp Log Message: gameplay tweak (removed stunner effect), reason: too many tweaks isn't nice. Index: shpneccr.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpneccr.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** shpneccr.cpp 11 Jul 2005 00:25:32 -0000 1.14 --- shpneccr.cpp 16 Jul 2005 23:47:23 -0000 1.15 *************** *** 41,45 **** virtual void inflict_damage(SpaceObject *other); }; ! class NechanziStun: public SpaceObject { public: --- 41,45 ---- virtual void inflict_damage(SpaceObject *other); }; ! /* class NechanziStun: public SpaceObject { public: *************** *** 58,61 **** --- 58,62 ---- virtual void calculate(); }; + */ class NechanziCruiser : public Ship { *************** *** 212,217 **** NM->mass = specialMass; NM->maxSpeed = specialMaxSpeed1; ! NM->missileType = 2; ! NM->stunFrames = iround(specialStunFrames); game->add(NM); --- 213,218 ---- NM->mass = specialMass; NM->maxSpeed = specialMaxSpeed1; ! NM->missileType = 2; // this is actually obsolete (stun removed - Geo) ! NM->stunFrames = iround(specialStunFrames); // this is actually obsolete (stun removed - Geo) game->add(NM); *************** *** 425,435 **** STACKTRACE Shot::inflict_damage(other); ! if(missileType==2 && other->isShip() && isActivated) { ! game->add(new NechanziStun((Ship*)other, data->spriteExtra, 64, 50, ! stunFrames)); ! } } ! NechanziStun::NechanziStun(Ship *oship, SpaceSprite *osprite, int ofcount, --- 426,436 ---- STACKTRACE Shot::inflict_damage(other); ! // if(missileType==2 && other->isShip() && isActivated) { ! // game->add(new NechanziStun((Ship*)other, data->spriteExtra, 64, 50, ! //stunFrames)); ! // } } ! /* NechanziStun::NechanziStun(Ship *oship, SpaceSprite *osprite, int ofcount, *************** *** 474,478 **** SpaceObject::calculate(); } ! --- 475,479 ---- SpaceObject::calculate(); } ! */ |
From: Rob <geo...@us...> - 2005-07-16 23:47:31
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31840/ships Modified Files: shpneccr.ini Log Message: gameplay tweak (removed stunner effect), reason: too many tweaks isn't nice. Index: shpneccr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpneccr.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpneccr.ini 5 Jan 2004 21:59:54 -0000 1.5 --- shpneccr.ini 16 Jul 2005 23:47:23 -0000 1.6 *************** *** 37,42 **** Velocity2 = 2.25 Velocity3 = 2.0 ! Damage1 = 2 ! Damage2 = 3 Damage3 = 3 Armour1 = 1 --- 37,42 ---- Velocity2 = 2.25 Velocity3 = 2.0 ! Damage1 = 1 ; 2 ! Damage2 = 2 ; 3 Damage3 = 3 Armour1 = 1 *************** *** 63,67 **** ReleaseAngle3B = 60 Relativity = 1.0 ! StunFrames = 5500 HotspotRate = 4 --- 63,67 ---- ReleaseAngle3B = 60 Relativity = 1.0 ! StunFrames = 5500 ; obsolete HotspotRate = 4 |
From: Rob <geo...@us...> - 2005-07-16 23:46:45
|
Update of /cvsroot/timewarp/source/sc2ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31707/source/sc2ships Modified Files: shpmeltr.cpp Log Message: Index: shpmeltr.cpp =================================================================== RCS file: /cvsroot/timewarp/source/sc2ships/shpmeltr.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** shpmeltr.cpp 11 Jul 2005 00:25:58 -0000 1.12 --- shpmeltr.cpp 16 Jul 2005 23:46:37 -0000 1.13 *************** *** 262,265 **** --- 262,266 ---- if(!(ship && ship->exists())) { + ship->del_override_control(ocm); ship = 0; state = 0; |
From: Rob <geo...@us...> - 2005-07-16 23:46:45
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31707/source/newships Modified Files: shptaule.cpp Log Message: Index: shptaule.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shptaule.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** shptaule.cpp 11 Jul 2005 00:25:32 -0000 1.16 --- shptaule.cpp 16 Jul 2005 23:46:37 -0000 1.17 *************** *** 10,79 **** #define LEVIATHAN_SLIME_FOOD 0x12001457 ! #define LEVIATHAN_JAMMER 0x2050 - class TauLeviathan : public Ship { public: IDENTITY(TauLeviathan); - double weaponRange, weaponVelocity, weaponDamage, weaponArmour; - double weaponSpread, weaponRelativity; - double specialRange, specialVelocity, specialDamage, specialArmour; - double specialTurnRate; - - int extraTime; - double extraSpeed; - bool extraGreen; - - double food2batt; - double healing_amount; - int healing_rate; - int healing_step; - int missile_side; - - public: - - TauLeviathan(Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code); - - virtual int activate_weapon(); - virtual int activate_special(); - virtual RGB crewPanelColor(int k = 0); - // virtual int battPanelColor(); - - virtual void calculate(); - virtual int handle_damage(SpaceLocation *source, double normal, double direct); - virtual void calculate_hotspots(); - }; --- 10,57 ---- #define LEVIATHAN_SLIME_FOOD 0x12001457 ! //#define LEVIATHAN_JAMMER 0x2050 + // allows other ships to affect control over a ship. + class OverrideControlLeviathan : public OverrideControl + { + public: + virtual void calculate(short *key); + }; + class TauLeviathan : public Ship { public: IDENTITY(TauLeviathan); double weaponRange, weaponVelocity, weaponDamage, weaponArmour; double weaponSpread, weaponRelativity; double specialRange, specialVelocity, specialDamage, specialArmour; double specialTurnRate; int extraTime; double extraSpeed; bool extraGreen; double food2batt; double healing_amount; int healing_rate; int healing_step; int missile_side; public: TauLeviathan(Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code); virtual int activate_weapon(); virtual int activate_special(); virtual RGB crewPanelColor(int k = 0); // virtual int battPanelColor(); virtual void calculate(); virtual int handle_damage(SpaceLocation *source, double normal, double direct); virtual void calculate_hotspots(); }; *************** *** 149,169 **** class LeviathanJammer : public FixedAnimation - { public: ! IDENTITY(LeviathanJammer); ! public: ! ! ! SpaceLocation *victim; ! - LeviathanJammer (SpaceLocation *creator, SpaceLocation *opos, SpaceSprite *osprite); - virtual void calculate(); - }; --- 127,140 ---- class LeviathanJammer : public FixedAnimation { public: ! IDENTITY(LeviathanJammer); public: ! OverrideControlLeviathan *ocl; ! Ship *victim; LeviathanJammer (SpaceLocation *creator, SpaceLocation *opos, SpaceSprite *osprite); virtual void calculate(); }; *************** *** 552,580 **** - LeviathanJammer::LeviathanJammer (SpaceLocation *creator, SpaceLocation *opos, SpaceSprite *osprite) : FixedAnimation(creator, opos, osprite, 0, 20, 50, LAYER_EXPLOSIONS) - { ! id = LEVIATHAN_JAMMER; ! ! if (opos->isShip()) { ! victim = (Ship*)opos; ! Query q; ! for (q.begin(victim, bit(LAYER_EXPLOSIONS), 1); q.current; q.next()) if (q.currento->getID() == LEVIATHAN_JAMMER) ! if (((LeviathanJammer*)q.current)->victim == victim) ! ((LeviathanJammer*)q.current)->victim = NULL; } ! ! else victim = NULL; }; --- 523,566 ---- + void OverrideControlLeviathan::calculate(short *key) + { + *key &= ~(keyflag::left + keyflag::right + keyflag::thrust); + } + LeviathanJammer::LeviathanJammer (SpaceLocation *creator, SpaceLocation *opos, SpaceSprite *osprite) : FixedAnimation(creator, opos, osprite, 0, 20, 50, LAYER_EXPLOSIONS) { + //id = LEVIATHAN_JAMMER; ! if (opos->isShip()) ! { victim = (Ship*)opos; ! /* obsolete: override controls is handled by a list; resetting the victim pointer externally like ! this will make the list management fail. Query q; ! for (q.begin(victim, bit(LAYER_EXPLOSIONS), 1); q.current; q.next()) + { if (q.currento->getID() == LEVIATHAN_JAMMER) ! { if (((LeviathanJammer*)q.current)->victim == victim) + ((LeviathanJammer*)q.current)->victim = 0; } + } + */ + } ! else ! { ! victim = 0; ! } + if (victim) + { + ocl = new OverrideControlLeviathan(); + victim->set_override_control(ocl); + } else + ocl = 0; }; *************** *** 584,601 **** { ! STACKTRACE FixedAnimation::calculate(); ! if (!exists()) return; ! if (victim) { if (!victim->exists()) { ! victim = NULL; return; } ! ((Ship*)victim)->nextkeys &= ~(keyflag::left + keyflag::right + keyflag::thrust); Vector2 vv = victim->get_vel(); double vvv = magnitude(vv); ! if (vvv < 1e-5) return; vvv = (vvv - ((Ship*)victim)->accel_rate * frame_time) / vvv; if (vvv < 0) vvv = 0; --- 570,599 ---- { ! STACKTRACE; FixedAnimation::calculate(); ! // perform this test here, cause there's a return later on... ! if (!exists()) ! { ! if (victim) ! victim->del_override_control(ocl); ! } ! if (victim) ! { if (!victim->exists()) { ! victim->del_override_control(ocl); ! victim = 0; ! return; ! } ! //((Ship*)victim)->nextkeys &= ~(keyflag::left + keyflag::right + keyflag::thrust); Vector2 vv = victim->get_vel(); double vvv = magnitude(vv); ! ! if (vvv < 1e-5) ! return; ! vvv = (vvv - ((Ship*)victim)->accel_rate * frame_time) / vvv; if (vvv < 0) vvv = 0; *************** *** 604,607 **** --- 602,606 ---- victim->accelerate(victim, atan(vv), vvv, MAX_SPEED); } + } |
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6307/ships Modified Files: shpiceco.ini shpkabwe.ini shpmekpi.ini shpradfi.ini shpsefn2.ini shptelno.ini shptougr.ini shpuxjba.ini shpxilcr.ini Log Message: AS settings update after some gameplay testing Index: shpuxjba.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpuxjba.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpuxjba.ini 15 Jul 2005 16:23:26 -0000 1.6 --- shpuxjba.ini 15 Jul 2005 19:12:13 -0000 1.7 *************** *** 44,48 **** [AI3_Default] ! Weapon = Narrow Special = Field --- 44,49 ---- [AI3_Default] ! Weapon = Missile ! WeaponRel = 0.0 Special = Field Index: shptougr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shptougr.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shptougr.ini 15 Jul 2005 16:23:26 -0000 1.6 --- shptougr.ini 15 Jul 2005 19:12:13 -0000 1.7 *************** *** 43,45 **** --- 43,46 ---- Weapon_Range = 25 Weapon = Front + WeaponRel = 1.0 Special = Sides Index: shpkabwe.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpkabwe.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpkabwe.ini 15 Jul 2005 16:23:26 -0000 1.6 --- shpkabwe.ini 15 Jul 2005 19:12:13 -0000 1.7 *************** *** 56,58 **** --- 56,59 ---- Special = Launched Special2 = No_range + Special3 = Back SpecialRel = 0 Index: shpradfi.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpradfi.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpradfi.ini 15 Jul 2005 16:23:26 -0000 1.6 --- shpradfi.ini 15 Jul 2005 19:12:13 -0000 1.7 *************** *** 39,43 **** [AI3_Default] Weapon_Range = 40 ! Special_Range = 1 Special = Defense Special2 = Proximity --- 39,43 ---- [AI3_Default] Weapon_Range = 40 ! Special_Range = 4 Special = Defense Special2 = Proximity Index: shpiceco.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpiceco.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpiceco.ini 15 Jul 2005 16:23:26 -0000 1.5 --- shpiceco.ini 15 Jul 2005 19:12:13 -0000 1.6 *************** *** 48,51 **** --- 48,53 ---- [AI3_Default] + Weapon_Range = 10 + Special_Range = 13 Special = Defense Special2 = Homing Index: shpsefn2.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpsefn2.ini,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** shpsefn2.ini 15 Jul 2005 16:23:26 -0000 1.2 --- shpsefn2.ini 15 Jul 2005 19:12:13 -0000 1.3 *************** *** 54,63 **** [AI3_Default] ! Weapon_Range = 2 ! Weapon = Narrow ! Weapon2 = Precedence Special_Range = 30 Special = Narrow ! Special2 = Always_When_Full --- 54,63 ---- [AI3_Default] ! Weapon_Range = 5 ! Weapon = Precedence ! WeaponRel = 0.0 Special_Range = 30 Special = Narrow ! SpecialRel = 0.0 Index: shpmekpi.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpmekpi.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpmekpi.ini 15 Jul 2005 16:23:26 -0000 1.6 --- shpmekpi.ini 15 Jul 2005 19:12:13 -0000 1.7 *************** *** 54,59 **** Special_Range = 20 Special = Precedence ! Special2 = Always_When_Full ! Special3 = Field SpecialFreq = 1 --- 54,58 ---- Special_Range = 20 Special = Precedence ! Special2 = Field SpecialFreq = 1 Index: shpxilcr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpxilcr.ini,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** shpxilcr.ini 15 Jul 2005 16:23:26 -0000 1.10 --- shpxilcr.ini 15 Jul 2005 19:12:13 -0000 1.11 *************** *** 54,57 **** --- 54,58 ---- [AI3_Default] Weapon = Sides + WeaponRel = 1.0 Special = Defense SpecialFreq = 1 Index: shptelno.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shptelno.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shptelno.ini 11 Jul 2005 00:25:09 -0000 1.4 --- shptelno.ini 15 Jul 2005 19:12:13 -0000 1.5 *************** *** 36,37 **** --- 36,43 ---- Damage = 2 DamagePeriod = 1.0 ; repeat damage in seconds + + [AI3_Default] + Weapon = Field + Weapon_Range = 20 + Special = Field + |
From: Rob <geo...@us...> - 2005-07-15 18:38:36
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30796/ships Modified Files: shpclofl.ini shpfopsl.ini shpfresc.ini shpglacr.ini Log Message: modifications after some melee testing Index: shpfresc.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpfresc.ini,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** shpfresc.ini 15 Jul 2005 16:23:26 -0000 1.8 --- shpfresc.ini 15 Jul 2005 18:38:27 -0000 1.9 *************** *** 49,53 **** [AI3_Default] ! Tactic_Min = 15 Tactic_Max = 50 Tactic = Range --- 49,57 ---- [AI3_Default] ! Weapon_Range = 20 ! Weapon = Narrow ! Special_Range = 30 ! Special = Homing ! Tactic_Min = 20 Tactic_Max = 50 Tactic = Range Index: shpclofl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpclofl.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpclofl.ini 15 Jul 2005 16:23:25 -0000 1.4 --- shpclofl.ini 15 Jul 2005 18:38:27 -0000 1.5 *************** *** 60,68 **** [AI3_Default] ! Weapon = Homing ! Special_Range = 10 ! Special = Always_When_Full ! Special2 = Proximity ! Special_Timer = 30 Tactic_Min = 15 Tactic_Max = 40 --- 60,69 ---- [AI3_Default] ! Weapon_Range = 25 ! Weapon = Field ! Special_Range = 30 ! Special = Precedence ! Special2 = Field ! Special_Timer = 10 Tactic_Min = 15 Tactic_Max = 40 Index: shpglacr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpglacr.ini,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** shpglacr.ini 15 Jul 2005 16:23:26 -0000 1.7 --- shpglacr.ini 15 Jul 2005 18:38:27 -0000 1.8 *************** *** 53,56 **** --- 53,58 ---- Weapon = Narrow Weapon_Range = 60 + WeaponRel = 1.0 + Weapon_Velocity = 50 Special = Back Special = Defense Index: shpfopsl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpfopsl.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpfopsl.ini 15 Jul 2005 16:23:26 -0000 1.5 --- shpfopsl.ini 15 Jul 2005 18:38:27 -0000 1.6 *************** *** 44,47 **** --- 44,49 ---- BattRecharge = 10 Weapon_Range = 60 + Weapon_Velocity = 40 + WeaponRel = 1.0 Special_Range = 20 Special = No_Proximity |
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv841/ships Modified Files: shpalckr.ini shpayrbs.ini shpbatde.ini shpclofl.ini shpconho.ini shpcrapl.ini shpdyzha.ini shpearc2.ini shpfopsl.ini shpfresc.ini shpglacr.ini shphubde.ini shpiceco.ini shpjnkla.ini shpjygst.ini shpkabwe.ini shpkahbo.ini shpkolfl.ini shpleimu.ini shpmekpi.ini shpmoisp.ini shpphepa.ini shpradfi.ini shpsefn2.ini shptougr.ini shpuxjba.ini shpxilcr.ini Log Message: AI parameter fixes. Some ships didn't have any settings yet, so I've added a few which I think will make them better opponents in combat. Index: shphubde.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shphubde.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shphubde.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shphubde.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 36,37 **** --- 36,47 ---- Damage = 1 + [AI3_Default] + Weapon = Narrow + Weapon_Range = 20 + Special = Defense + Special2 = Proximity + Special3 = Mine + Special4 = Field + Special_Range = 10 + + Index: shpjnkla.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpjnkla.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpjnkla.ini 3 Mar 2004 21:20:19 -0000 1.6 --- shpjnkla.ini 15 Jul 2005 16:23:26 -0000 1.7 *************** *** 45,49 **** [Names] ! NumNames = 7 CaptName1 = Jikidra CaptName2 = Mrgrol --- 45,49 ---- [Names] ! NumNames = 9 CaptName1 = Jikidra CaptName2 = Mrgrol *************** *** 53,57 **** CaptName6 = Jio-Endre CaptName7 = N'krelx ! = Kjyrn ! CaptName6 = Jio-Endre ! CaptName7 = N'krelx --- 53,64 ---- CaptName6 = Jio-Endre CaptName7 = N'krelx ! CaptName8 = Kjyrn ! CaptName9 = Jio-Endre ! ! ! [AI3_Default] ! Weapon = Front ! Weapon = Narrow ! Special = Defense ! Special2 = Field ! SpecialFreq = 1 Index: shpmekpi.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpmekpi.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpmekpi.ini 5 Jan 2004 21:59:54 -0000 1.5 --- shpmekpi.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 52,56 **** [AI3_Default] ! Special = Defense SpecialFreq = 1 --- 52,59 ---- [AI3_Default] ! Special_Range = 20 ! Special = Precedence ! Special2 = Always_When_Full ! Special3 = Field SpecialFreq = 1 Index: shpleimu.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpleimu.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpleimu.ini 11 Jul 2005 00:25:09 -0000 1.6 --- shpleimu.ini 15 Jul 2005 16:23:26 -0000 1.7 *************** *** 44,45 **** --- 44,52 ---- [AI3_Default] + Weapon = Front + Special = Back + Special2 = Homing + Tactic_Min = 5 + Tactic_Max = 15 + Tactic = Range + Index: shpbatde.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpbatde.ini,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** shpbatde.ini 5 Jan 2004 21:59:54 -0000 1.9 --- shpbatde.ini 15 Jul 2005 16:23:25 -0000 1.10 *************** *** 55,58 **** --- 55,63 ---- GravRange = 25 + [AI3_Default] + Weapon = Homing + Special = Defense + SpecialFreq = 2 + [Names] NumNames = 6 Index: shpuxjba.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpuxjba.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpuxjba.ini 11 Jul 2005 00:25:09 -0000 1.5 --- shpuxjba.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 44,48 **** [AI3_Default] ! [Names] --- 44,49 ---- [AI3_Default] ! Weapon = Narrow ! Special = Field [Names] Index: shptougr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shptougr.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shptougr.ini 11 Jul 2005 00:25:09 -0000 1.5 --- shptougr.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 41,44 **** --- 41,45 ---- [AI3_Default] + Weapon_Range = 25 Weapon = Front Special = Sides Index: shpclofl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpclofl.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpclofl.ini 5 Jan 2004 21:59:54 -0000 1.3 --- shpclofl.ini 15 Jul 2005 16:23:25 -0000 1.4 *************** *** 60,66 **** [AI3_Default] ! Weapon = Missile ! Special = Attack ! SpecialFreq = 3 --- 60,71 ---- [AI3_Default] ! Weapon = Homing ! Special_Range = 10 ! Special = Always_When_Full ! Special2 = Proximity ! Special_Timer = 30 ! Tactic_Min = 15 ! Tactic_Max = 40 ! Tactic = Range Index: shpglacr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpglacr.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpglacr.ini 11 Jul 2005 00:25:09 -0000 1.6 --- shpglacr.ini 15 Jul 2005 16:23:26 -0000 1.7 *************** *** 53,57 **** Weapon = Narrow Weapon_Range = 60 ! --- 53,58 ---- Weapon = Narrow Weapon_Range = 60 ! Special = Back ! Special = Defense Index: shpradfi.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpradfi.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpradfi.ini 11 Jul 2005 00:25:09 -0000 1.5 --- shpradfi.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 38,41 **** --- 38,51 ---- [AI3_Default] + Weapon_Range = 40 + Special_Range = 1 Special = Defense + Special2 = Proximity + Special3 = Next_State + Special_Timer = 50 + [AI3_Default2] + ; take a beating for recharging... + Weapon = None + Special = Always_When_Full + Special2 = Reset_State Index: shpalckr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpalckr.ini,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** shpalckr.ini 5 Jan 2004 21:59:54 -0000 1.7 --- shpalckr.ini 15 Jul 2005 16:23:25 -0000 1.8 *************** *** 61,65 **** Special = Reserve_Battery BattRecharge = 10 ! Special3 = Defense SpecialFreq = 2 --- 61,65 ---- Special = Reserve_Battery BattRecharge = 10 ! Special2 = Defense SpecialFreq = 2 Index: shpiceco.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpiceco.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpiceco.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shpiceco.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 49,51 **** --- 49,52 ---- [AI3_Default] Special = Defense + Special2 = Homing SpecialFreq = 1 Index: shpphepa.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpphepa.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpphepa.ini 11 Jul 2005 00:25:09 -0000 1.5 --- shpphepa.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 46,50 **** SpecialFreq = 4 ! Tactic = Indirect Weapon_Velocity = 99 Special_Timer = 300 --- 46,50 ---- SpecialFreq = 4 ! Tactic = Direct Weapon_Velocity = 99 Special_Timer = 300 Index: shpconho.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpconho.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpconho.ini 12 Jul 2005 22:26:03 -0000 1.6 --- shpconho.ini 15 Jul 2005 16:23:25 -0000 1.7 *************** *** 56,58 **** --- 56,59 ---- Special = Front Special2 = Proximity + Special3 = Homing Special_Range = 18 Index: shpfopsl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpfopsl.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpfopsl.ini 11 Jul 2005 00:25:09 -0000 1.4 --- shpfopsl.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 41,44 **** specialR = 50 ! [AI3_Default] --- 41,49 ---- specialR = 50 ! [AI3_Default] ! BattRecharge = 10 ! Weapon_Range = 60 ! Special_Range = 20 ! Special = No_Proximity ! Special2 = Battery Index: shpkahbo.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpkahbo.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpkahbo.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shpkahbo.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 53,56 **** --- 53,57 ---- [AI3_Default] Weapon_Range = 18 + Weapon = Precedence Special_Range = 18 Special_Timer = 100 *************** *** 62,65 **** --- 63,67 ---- [AI3_Default2] Weapon_Range = 30 + Weapon = Precedence Special_Range = 28 Special_Timer = 100 *************** *** 74,77 **** --- 76,80 ---- Weapon = No_range Weapon2 = Launched + Weapon3 = Precedence WeaponRel = 1 Special_Range = 25 Index: shpmoisp.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpmoisp.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpmoisp.ini 12 Jul 2005 22:26:03 -0000 1.4 --- shpmoisp.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 59,62 **** [AI3_Default] ! Special = Defense --- 59,62 ---- [AI3_Default] ! Special_Timer = 2 Index: shpfresc.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpfresc.ini,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** shpfresc.ini 11 Jul 2005 00:25:09 -0000 1.7 --- shpfresc.ini 15 Jul 2005 16:23:26 -0000 1.8 *************** *** 48,49 **** --- 48,53 ---- CaptName3 = Brecciex + [AI3_Default] + Tactic_Min = 15 + Tactic_Max = 50 + Tactic = Range Index: shpearc2.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpearc2.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpearc2.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shpearc2.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 6,9 **** --- 6,10 ---- Coders = Tau Code = EarthlingCruiser2 + GFX = unknown, panel=deeko [Ship] Index: shpsefn2.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpsefn2.ini,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shpsefn2.ini 26 Feb 2004 21:36:34 -0000 1.1 --- shpsefn2.ini 15 Jul 2005 16:23:26 -0000 1.2 *************** *** 54,60 **** [AI3_Default] ! Weapon = Missile ! Special = Attack ! SpecialFreq = 3 [Names] --- 54,64 ---- [AI3_Default] ! Weapon_Range = 2 ! Weapon = Narrow ! Weapon2 = Precedence ! Special_Range = 30 ! Special = Narrow ! Special2 = Always_When_Full ! [Names] Index: shpayrbs.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpayrbs.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpayrbs.ini 5 Jan 2004 21:59:54 -0000 1.5 --- shpayrbs.ini 15 Jul 2005 16:23:25 -0000 1.6 *************** *** 39,44 **** [AI3_Default] ! Weapon = Missile ! Special = Attack SpecialFreq = 3 --- 39,46 ---- [AI3_Default] ! ; weapon is lasers ! Weapon = Homing ! ; special recrews ! Special = Always_When_Full SpecialFreq = 3 Index: shpdyzha.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpdyzha.ini,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** shpdyzha.ini 5 Jan 2004 21:59:54 -0000 1.8 --- shpdyzha.ini 15 Jul 2005 16:23:26 -0000 1.9 *************** *** 56,60 **** --- 56,62 ---- [AI3_Default] Weapon = Narrow + Weapon2 = Defense Weapon_Range = 12.0 + WeaponFreq = 5 Weapon2 = Precedence Special = Always_When_Full Index: shpkolfl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpkolfl.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpkolfl.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shpkolfl.ini 15 Jul 2005 16:23:26 -0000 1.5 *************** *** 37,38 **** --- 37,48 ---- [Quirk] + + [AI3_Default] + Weapon_Range = 5 + Weapon = Front + Weapon2 = Back + Special_Range = 10 + Special = Defense + + + Index: shpcrapl.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpcrapl.ini,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpcrapl.ini 11 Jul 2005 00:25:09 -0000 1.6 --- shpcrapl.ini 15 Jul 2005 16:23:25 -0000 1.7 *************** *** 40,41 **** --- 40,49 ---- AngVel = 90 ; in degrees per second ActionRange = 120 + + + [AI3_Default] + Weapon = Field + Weapon_Range = 40 + Special = Field + Special_Range = 99 + Index: shpkabwe.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpkabwe.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpkabwe.ini 11 Jul 2005 00:25:09 -0000 1.5 --- shpkabwe.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 54,57 **** [AI3_Default] ! Special = Defense ! SpecialFreq = 1 --- 54,58 ---- [AI3_Default] ! Special = Launched ! Special2 = No_range ! SpecialRel = 0 Index: shpxilcr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpxilcr.ini,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** shpxilcr.ini 11 Jul 2005 00:25:09 -0000 1.9 --- shpxilcr.ini 15 Jul 2005 16:23:26 -0000 1.10 *************** *** 56,59 **** --- 56,63 ---- Special = Defense SpecialFreq = 1 + Special_Timer = 50 + Tactic_Min = 10 + Tactic_Max = 30 + Tactic = Range [Names] Index: shpjygst.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpjygst.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpjygst.ini 5 Jan 2004 21:59:54 -0000 1.5 --- shpjygst.ini 15 Jul 2005 16:23:26 -0000 1.6 *************** *** 45,48 **** --- 45,49 ---- Weapon_Range = 16 Special = No_Proximity + Special2 = Always_When_Full Special_Range = 25 |
From: Rob <geo...@us...> - 2005-07-15 16:23:42
|
Update of /cvsroot/timewarp/ships/sc2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv841/ships/sc2 Modified Files: shpslypr.ini Log Message: AI parameter fixes. Some ships didn't have any settings yet, so I've added a few which I think will make them better opponents in combat. Index: shpslypr.ini =================================================================== RCS file: /cvsroot/timewarp/ships/sc2/shpslypr.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpslypr.ini 8 Jun 2003 17:55:41 -0000 1.3 --- shpslypr.ini 15 Jul 2005 16:23:24 -0000 1.4 *************** *** 34,38 **** [AI3_Default] ! Weapon = Feild Weapon_Range = 5 Special = Battery --- 34,38 ---- [AI3_Default] ! Weapon = Field Weapon_Range = 5 Special = Battery |
From: Rob <geo...@us...> - 2005-07-13 23:04:30
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18214/ships Modified Files: shpearc2.dat Log Message: including new panels made by deeko Index: shpearc2.dat =================================================================== RCS file: /cvsroot/timewarp/ships/shpearc2.dat,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvsgUyeXI and /tmp/cvsyutt4f differ |
From: Rob <geo...@us...> - 2005-07-12 22:26:13
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9416/ships Modified Files: shparkpi.ini shpconho.ini shpjurcu.ini shpktesa.ini shpmoisp.ini shpxxxas.ini shpxxxas.txt Log Message: a few more ship tweaks ... aimed at smoother gameplay, and less annoyance / slightly less extreme settings. Index: shpmoisp.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpmoisp.ini,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpmoisp.ini 5 Jan 2004 21:59:54 -0000 1.3 --- shpmoisp.ini 12 Jul 2005 22:26:03 -0000 1.4 *************** *** 1,4 **** [Info] ! TWCost = 8 Name1 = Moian Name2 = Speeder --- 1,4 ---- [Info] ! TWCost = 6 Name1 = Moian Name2 = Speeder *************** *** 47,58 **** TurnRate = 10 ! T = 4 ! N = 20 ; releases N speedblobs during time T (in seconds) [Speedblob] ; note that the blob gives a speed boost in 1 second to the releasership's velocity ; unless fraction is set <1, then it takes longer (0=no boost) ! speedfraction = 0.25 ! lifetime = 5.0 ; it lives for this many seconds and then disappears Range = 3 --- 47,59 ---- TurnRate = 10 ! ; lifetime ! T = 5 ! N = 10 ; releases N speedblobs during time T (in seconds) (old val=20) [Speedblob] ; note that the blob gives a speed boost in 1 second to the releasership's velocity ; unless fraction is set <1, then it takes longer (0=no boost) ! speedfraction = 0.5 ! lifetime = 6.0 ; it lives for this many seconds and then disappears Range = 3 Index: shpconho.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpconho.ini,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** shpconho.ini 5 Jan 2004 21:59:54 -0000 1.5 --- shpconho.ini 12 Jul 2005 22:26:03 -0000 1.6 *************** *** 1,4 **** [Info] ! TWCost = 20 Name = Confed. Hornet Name1 = Confederation --- 1,4 ---- [Info] ! TWCost = 18 Name = Confed. Hornet Name1 = Confederation *************** *** 34,38 **** Range = 20 Velocity = 64 ! Damage = 2 DDamage = 1 Armour = 2 --- 34,38 ---- Range = 20 Velocity = 64 ! Damage = 1 DDamage = 1 Armour = 2 Index: shpxxxas.txt =================================================================== RCS file: /cvsroot/timewarp/ships/shpxxxas.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** shpxxxas.txt 8 Jun 2003 17:55:30 -0000 1.3 --- shpxxxas.txt 12 Jul 2005 22:26:03 -0000 1.4 *************** *** 7,17 **** Top Speed - Good ! Weapons ! Primary - Variable energy shots. ! Secondary - Reset attributes to normal. Extra - "steals" opponent's weapon attribute when hit. - "steals" opponent's ship attribute after collision. - variable weapon outlet (The Spot) NOTE: "stealing" only works if its better than Assimilator's current attribute. --- 7,19 ---- Top Speed - Good ! Weapons: ! Primary - energy shots. ! Secondary - Reset all attributes to normal: weapon damage, ship speed, etc. Extra - "steals" opponent's weapon attribute when hit. - "steals" opponent's ship attribute after collision. - variable weapon outlet (The Spot) + Note that this tweak occurs automatically. + NOTE: "stealing" only works if its better than Assimilator's current attribute. Index: shparkpi.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shparkpi.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shparkpi.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shparkpi.ini 12 Jul 2005 22:26:03 -0000 1.5 *************** *** 17,23 **** BattMax = 30 SpeedMax = 40 ! AccelRate = 6 ! TurnRate = 5 ! ;TurnRate = 6 this causes ACK(1) crashes, but 5 is OK. I am befuddled. RechargeAmount = 1 RechargeRate = 30 --- 17,22 ---- BattMax = 30 SpeedMax = 40 ! AccelRate = 5 ! TurnRate = 4 RechargeAmount = 1 RechargeRate = 30 *************** *** 29,33 **** Mass = 12 MinBattForRegrowth = 0 ! TimeForRegrowth = 6000 [Weapon] --- 28,32 ---- Mass = 12 MinBattForRegrowth = 0 ! TimeForRegrowth = 4000 ;6000 [Weapon] *************** *** 41,46 **** RangeOpen = 1.0 RangeClosed = 2.0 ! Damage = 2 ! CrushDamage = 6 Armour = 8 Mass = 12 --- 40,45 ---- RangeOpen = 1.0 RangeClosed = 2.0 ! Damage = 3 ;2 ! CrushDamage = 8 ;6 Armour = 8 Mass = 12 *************** *** 54,61 **** [Special] ! FramesPerEnergy = 200 IsRelativistic = 0 ZeroesNormalVelocity = 1 ! Velocity = 110 Color = 15 Frames = 100 --- 53,60 ---- [Special] ! FramesPerEnergy = 300 IsRelativistic = 0 ZeroesNormalVelocity = 1 ! Velocity = 60 ; 110 Color = 15 Frames = 100 Index: shpxxxas.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpxxxas.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpxxxas.ini 15 Nov 2003 11:04:18 -0000 1.4 --- shpxxxas.ini 12 Jul 2005 22:26:03 -0000 1.5 *************** *** 1,4 **** [Info] ! TWCost = 25 Name1 = Space Monster Name2 = Assimilator --- 1,4 ---- [Info] ! TWCost = 15 Name1 = Space Monster Name2 = Assimilator *************** *** 8,18 **** [Ship] ! Crew = 34 ! CrewMax = 34 Batt = 34 BattMax = 34 ! SpeedMax = 36 AccelRate = 9 ! TurnRate = 1 RechargeAmount = 1 RechargeRate = 4 --- 8,18 ---- [Ship] ! Crew = 18 ;34 ! CrewMax = 18 Batt = 34 BattMax = 34 ! SpeedMax = 30 ;36 AccelRate = 9 ! TurnRate = 3 ;1 RechargeAmount = 1 RechargeRate = 4 Index: shpjurcu.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpjurcu.ini,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** shpjurcu.ini 8 Jan 2004 22:21:42 -0000 1.1 --- shpjurcu.ini 12 Jul 2005 22:26:03 -0000 1.2 *************** *** 31,35 **** [Special] ! Damage = 5 Frames = 1 --- 31,36 ---- [Special] ! Damage = 10 ! ; damage per second Frames = 1 Index: shpktesa.ini =================================================================== RCS file: /cvsroot/timewarp/ships/shpktesa.ini,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shpktesa.ini 5 Jan 2004 21:59:54 -0000 1.4 --- shpktesa.ini 12 Jul 2005 22:26:03 -0000 1.5 *************** *** 9,13 **** [Ship] Crew = 16 ! CrewMax = 26 Batt = 10 BattMax = 20 --- 9,13 ---- [Ship] Crew = 16 ! CrewMax = 20 Batt = 10 BattMax = 20 *************** *** 15,22 **** AccelRate = 5 TurnRate = 3 ! RechargeAmount = 1 ! RechargeRate = 2 ! WeaponDrain = 4 ! WeaponRate = 3 SpecialDrain = 1 SpecialRate = 0 --- 15,22 ---- AccelRate = 5 TurnRate = 3 ! RechargeAmount = 1 ;1 ! RechargeRate = 2 ;2 ! WeaponDrain = 2 ! WeaponRate = 2 SpecialDrain = 1 SpecialRate = 0 |
From: Rob <geo...@us...> - 2005-07-12 22:26:13
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9416/source/newships Modified Files: shpjurcu.cpp shpktesa.cpp shpmoisp.cpp shpxxxas.cpp Log Message: a few more ship tweaks ... aimed at smoother gameplay, and less annoyance / slightly less extreme settings. Index: shpmoisp.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpmoisp.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** shpmoisp.cpp 11 Jul 2005 00:25:32 -0000 1.12 --- shpmoisp.cpp 12 Jul 2005 22:26:04 -0000 1.13 *************** *** 308,312 **** if (R < blobrange) { ! ship->vel += accelvel * frame_time; // deliver the speed boost } --- 308,315 ---- if (R < blobrange) { ! //ship->vel += accelvel * frame_time; // deliver the speed boost ! ship->vel += accelvel.length() * frame_time * unit_vector(ship->angle); ! // deliver the speed boost ; to make this more useful, deliver it into the direction where ! // the moian is heading. } Index: shpjurcu.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpjurcu.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shpjurcu.cpp 11 Jul 2005 00:25:31 -0000 1.6 --- shpjurcu.cpp 12 Jul 2005 22:26:03 -0000 1.7 *************** *** 13,20 **** double weaponRange; double weaponSpeed; ! int weaponDamage; int weaponColor; ! int specialDamage; int specialFrames; --- 13,20 ---- double weaponRange; double weaponSpeed; ! double weaponDamage; int weaponColor; ! double specialDamage; int specialFrames; *************** *** 32,36 **** IDENTITY(JurgathaPortal); public: ! JurgathaPortal(SpaceLocation *creator, Vector2 opos, int damage, SpaceSprite *osprite, int ofct, int ofsz); virtual void calculate(); }; --- 32,36 ---- IDENTITY(JurgathaPortal); public: ! JurgathaPortal(SpaceLocation *creator, Vector2 opos, double damage, SpaceSprite *osprite, int ofct, int ofsz); virtual void calculate(); }; *************** *** 44,51 **** weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponSpeed = get_config_float("Weapon", "Speed", 1); ! weaponDamage = get_config_int("Weapon", "Damage", 0); weaponColor = get_config_int("Weapon", "Color", 2); ! specialDamage = get_config_int("Special", "Damage", 0); specialFrames = scale_frames(get_config_int("Special", "Frames", 0)); } --- 44,51 ---- weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponSpeed = get_config_float("Weapon", "Speed", 1); ! weaponDamage = get_config_float("Weapon", "Damage", 0); weaponColor = get_config_int("Weapon", "Color", 2); ! specialDamage = get_config_float("Special", "Damage", 0); specialFrames = scale_frames(get_config_int("Special", "Frames", 0)); } *************** *** 100,105 **** } ! JurgathaPortal::JurgathaPortal(SpaceLocation *creator, Vector2 opos, int damage, SpaceSprite *osprite, int ofct, int ofsz) : ! Animation(creator, opos, osprite, 0, ofct, ofsz, LAYER_HOTSPOTS){} void JurgathaPortal::calculate() --- 100,110 ---- } ! JurgathaPortal::JurgathaPortal(SpaceLocation *creator, Vector2 opos, double fdamage, SpaceSprite *osprite, int ofct, int ofsz) : ! Animation(creator, opos, osprite, 0, ofct, ofsz, LAYER_HOTSPOTS) ! { ! damage_factor = fdamage; ! ! // normally, an animation doesn't take part in collisions, so that this damage by itself won't do much ! } void JurgathaPortal::calculate() *************** *** 109,112 **** --- 114,118 ---- Query a; + // the animation needs to check if it inflicts damage on its own. for (a.begin(this, bit(LAYER_SHIPS) + bit(LAYER_SHOTS) + bit(LAYER_SPECIAL), sprite->width()/2); a.current; a.next()) *************** *** 115,119 **** { //a.currento->directDamage++; ! a.currento->handle_damage(this, 0, 1); } } --- 121,126 ---- { //a.currento->directDamage++; ! // inflict damage per second... ! a.currento->handle_damage(this, 0, damage_factor * frame_time / 1E3); } } Index: shpxxxas.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpxxxas.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** shpxxxas.cpp 11 Jul 2005 00:25:32 -0000 1.14 --- shpxxxas.cpp 12 Jul 2005 22:26:04 -0000 1.15 *************** *** 281,284 **** --- 281,288 ---- { + crew += 2; + if (crew >= crew_max) + crew = crew_max; + if (other->ship->speed_max > speed_max) Index: shpktesa.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpktesa.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** shpktesa.cpp 11 Jul 2005 00:25:32 -0000 1.10 --- shpktesa.cpp 12 Jul 2005 22:26:04 -0000 1.11 *************** *** 229,236 **** STACKTRACE AnimatedShot::calculate(); ! if (d < (range/2)) ! damage_factor = min_damage; ! else ! damage_factor = min_damage * 2; } --- 229,238 ---- STACKTRACE AnimatedShot::calculate(); ! ! // okay, originally the ship does increased damage at higher range. It's a bit of a strange extra tweak. ! //if (d < (range/2)) ! // damage_factor = min_damage; ! //else ! // damage_factor = min_damage * 2; } |
From: Rob <geo...@us...> - 2005-07-11 21:57:33
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4069/source/newships Modified Files: shpbubbo.cpp Log Message: Index: shpbubbo.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpbubbo.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** shpbubbo.cpp 11 Jul 2005 00:25:29 -0000 1.19 --- shpbubbo.cpp 11 Jul 2005 21:57:19 -0000 1.20 *************** *** 72,75 **** --- 72,77 ---- virtual int handle_damage(SpaceLocation *source, double normal, double direct); virtual void death(); + + virtual void calculate_index(); }; *************** *** 545,551 **** Ship::calculate(); ! sprite_index = sprite_index & 31; } --- 547,560 ---- Ship::calculate(); ! //sprite_index = sprite_index & 31; } + void BubalosBomber::calculate_index() + { + // this makes use of symmetry of the ship. + sprite_index = get_index(angle) & 31; + } + + |
From: Rob <geo...@us...> - 2005-07-11 21:57:30
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4069/source/melee Modified Files: mframe.cpp mframe.h mship.cpp Log Message: Index: mship.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mship.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** mship.cpp 11 Jul 2005 19:41:20 -0000 1.33 --- mship.cpp 11 Jul 2005 21:57:19 -0000 1.34 *************** *** 503,506 **** --- 503,509 ---- } + + + void Ship::locate() {STACKTRACE int tries = 0; *************** *** 543,550 **** --- 546,556 ---- // (geo) actually, this introduces a big bug if the ship has >64 frames in // the ship sprite -- eg the tau mercury. + /* if (sprite->frames() > 64) sprite_index = get_index(angle); else sprite_index = get_index(angle, PI/2, sprite->frames()); + */ + calculate_index(); *************** *** 759,768 **** } //sprite_index = get_index(angle); // should be the same as earlier in this routine: ! if (sprite->frames() > 64) sprite_index = get_index(angle); else ! sprite_index = get_index(angle, PI/2, sprite->frames()); // hotspots are too much a luxury to include in massive games (lots of objects) --- 765,779 ---- } + //sprite_index = get_index(angle); // should be the same as earlier in this routine: ! /* ! int n = sprite->frames(); ! if (n > 64) sprite_index = get_index(angle); else ! sprite_index = get_index(angle, PI/2, n); ! */ ! calculate_index(); // hotspots are too much a luxury to include in massive games (lots of objects) Index: mframe.h =================================================================== RCS file: /cvsroot/timewarp/source/melee/mframe.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** mframe.h 11 Jul 2005 00:25:28 -0000 1.23 --- mframe.h 11 Jul 2005 21:57:19 -0000 1.24 *************** *** 375,378 **** --- 375,380 ---- virtual void set_sprite ( SpaceSprite *sprite ); + virtual void calculate_index(); + // virtual void install_external_ai(const char* script); Index: mframe.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mframe.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** mframe.cpp 11 Jul 2005 00:25:28 -0000 1.31 --- mframe.cpp 11 Jul 2005 21:57:19 -0000 1.32 *************** *** 666,677 **** SpaceLocation::calculate(); ! if ((attributes & ATTRIB_STANDARD_INDEX) && sprite) { ! sprite_index = get_index(angle, PI/2, sprite->frames()); ! } // error check: ! if (sprite_index >= sprite->frames() || sprite_index < 0) ! { ! tw_error("sprite index overflow in %s", get_identity()); } --- 666,681 ---- SpaceLocation::calculate(); ! if (sprite) ! { ! if (attributes & ATTRIB_STANDARD_INDEX) ! { ! sprite_index = get_index(angle, PI/2, sprite->frames()); ! } // error check: ! if (sprite_index >= sprite->frames() || sprite_index < 0) ! { ! tw_error("sprite index overflow in %s", get_identity()); ! } } *************** *** 679,682 **** --- 683,694 ---- } + void SpaceObject::calculate_index() + { + if (sprite->frames() > 64) + sprite_index = get_index(angle); + else + sprite_index = get_index(angle, PI/2, sprite->frames()); + } + SpaceObject::SpaceObject(SpaceLocation *creator, Vector2 opos, double oangle, SpaceSprite *osprite) |
From: Rob <geo...@us...> - 2005-07-11 19:54:09
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11546/source/newships Modified Files: shpsefn2.cpp Log Message: fix of the rope code Index: shpsefn2.cpp =================================================================== RCS file: /cvsroot/timewarp/source/newships/shpsefn2.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** shpsefn2.cpp 11 Jul 2005 00:25:32 -0000 1.7 --- shpsefn2.cpp 11 Jul 2005 19:53:48 -0000 1.8 *************** *** 1119,1122 **** --- 1119,1128 ---- int ix1, iy1, ix2, iy2; + double dx, dy; + dx = min_delta(pos2.x, pos1.x, map_size.x); + dy = min_delta(pos2.y, pos1.y, map_size.y); + pos2.x = pos1.x + dx; + pos2.y = pos1.y + dy; + Vector2 co; *************** *** 1128,1141 **** 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((float)dy,(float)dx); colscale = fabs(sin(a)); // flat lying = less visible. --- 1134,1145 ---- ix2 = int(co.x); iy2 = int(co.y); + + dx = ix2 - ix1; + dy = iy2 - iy1; // simulate visibility of a glittering line in the sun ... double a, colscale; ! a = atan2(dy, dx); colscale = fabs(sin(a)); // flat lying = less visible. |
From: Rob <geo...@us...> - 2005-07-11 19:41:33
|
Update of /cvsroot/timewarp/source/melee In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5716/source/melee Modified Files: mship.cpp Log Message: Index: mship.cpp =================================================================== RCS file: /cvsroot/timewarp/source/melee/mship.cpp,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** mship.cpp 11 Jul 2005 00:25:28 -0000 1.32 --- mship.cpp 11 Jul 2005 19:41:20 -0000 1.33 *************** *** 206,210 **** if (!shiptypes[i].code) ! tw_error("A ship without code? No way!"); if (!shiptypes[i].data || !shiptypes[i].code) { --- 206,212 ---- if (!shiptypes[i].code) ! { ! tw_error("A ship without code? No way! [%s]", code); ! } if (!shiptypes[i].data || !shiptypes[i].code) { *************** *** 757,761 **** } ! sprite_index = get_index(angle); // hotspots are too much a luxury to include in massive games (lots of objects) --- 759,768 ---- } ! //sprite_index = get_index(angle); ! // should be the same as earlier in this routine: ! if (sprite->frames() > 64) ! sprite_index = get_index(angle); ! else ! sprite_index = get_index(angle, PI/2, sprite->frames()); // hotspots are too much a luxury to include in massive games (lots of objects) |
From: Rob <geo...@us...> - 2005-07-11 19:29:39
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32399/ships Removed Files: shpalhha.dat shpalhha.ini Log Message: --- shpalhha.dat DELETED --- --- shpalhha.ini DELETED --- |
From: Rob <geo...@us...> - 2005-07-11 18:31:34
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3781/ships Removed Files: shpkatas.dat shpkatas.ini shpkatas.txt shpsefna.dat shpsefna.ini shpsefna.txt shpwolsw.dat shpwolsw.ini shpwolsw.txt shpzeksh.dat shpzeksh.ini Log Message: --- shpsefna.ini DELETED --- --- shpwolsw.ini DELETED --- --- shpkatas.ini DELETED --- --- shpzeksh.dat DELETED --- --- shpwolsw.dat DELETED --- --- shpsefna.dat DELETED --- --- shpsefna.txt DELETED --- --- shpzeksh.ini DELETED --- --- shpwolsw.txt DELETED --- --- shpkatas.dat DELETED --- --- shpkatas.txt DELETED --- |
From: Rob <geo...@us...> - 2005-07-11 18:31:18
|
Update of /cvsroot/timewarp/source/newships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3781/source/newships Added Files: shpkorsi.cpp shpkorsn.cpp Removed Files: shpkatas.cpp shpsefna.cpp shpwolmi.cpp shpzeksh.cpp Log Message: --- NEW FILE: shpkorsn.cpp --- /* $Id: shpkorsn.cpp,v 1.1 2005/07/11 18:31:04 geomannl Exp $ */ #include "../ship.h" #include "../scp.h" REGISTER_FILE class KorvianSniper : public Ship { public: IDENTITY(KorvianSniper); public: double weaponRange; double weaponVelocity; int weaponDamage; int weaponArmour; int cloak; int cloak_frame; int beep; public: static int cloak_color[3]; KorvianSniper(Vector2 opos, double angle, ShipData *data, unsigned int code); virtual double isInvisible() const; virtual int activate_weapon(); virtual void calculate_fire_special(); virtual void calculate_hotspots(); virtual void calculate(); virtual void animate(Frame *space); }; class SniperMissile : public Missile { public: IDENTITY(SniperMissile); public: SniperMissile(Vector2 opos, double oangle, double ov, int odamage, double orange, int oarmour, Ship *oship, SpaceSprite *osprite); }; KorvianSniper::KorvianSniper(Vector2 opos, double angle, ShipData *data, unsigned int code) : Ship(opos, angle, data, code) { weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponVelocity = scale_velocity(get_config_float("Weapon", "Velocity", 0)); weaponDamage = get_config_int("Weapon", "Damage", 0); weaponArmour = get_config_int("Weapon", "Armour", 0); beep = FALSE; cloak = TRUE; debug_id = 1009; } double KorvianSniper::isInvisible() const { return 1.0; } int KorvianSniper::activate_weapon() { // note that target=0 is only set after this routine is called in ship::calculate // so we need to check if it exists ... /*if (cloak && target && target->exists()) { if (distance(target) < weaponRange * 3) { angle = intercept_angle2(pos, vel * 1.0, weaponVelocity, target->normal_pos(), target->get_vel() ); } else angle = trajectory_angle(target); }*/ game->add(new SniperMissile( Vector2(0.0, size.y / 2.0), angle, weaponVelocity, weaponDamage, weaponRange, weaponArmour, this, data->spriteWeapon)); play_sound2(data->sampleWeapon[0]); /*game->add(new AnimatedShot(this, Vector2(0.0, size.y / 2.0), angle, weaponVelocity, weaponDamage, weaponRange, weaponArmour, this, data->spriteWeapon, 1, 12, 1.0));*/ return(TRUE); } void KorvianSniper::calculate_hotspots() { //Ship::calculate_hotspots(); } void KorvianSniper::calculate_fire_special() { if(fire_special) { special_low = FALSE; beep = TRUE; } if(fire_special) { if((batt < special_drain)) { special_low = TRUE; return; } if(abs(get_vel()) > 0.00001) { play_sound2(data->sampleSpecial[1]); change_vel(-get_vel()); //if(special_recharge > 0) //return; batt -= special_drain; } special_recharge = special_rate; } } void KorvianSniper::calculate() { double angle2; if(beep == TRUE) { if(target && target->exists() && !target->isInvisible()) { angle2 = angle - intercept_angle2(pos, vel * 1.0, weaponVelocity, target->normal_pos(), target->get_vel() ); Vector2 v = 350*Vector2(unit_vector(angle+PI/2)); double w = v.dot(target->get_vel())/distance(target); if(w < 0.0) w = -w; if(w > angle2 && angle2 > -w) { play_sound2(data->sampleSpecial[0]); beep = FALSE; } } } Ship::calculate(); } void KorvianSniper::animate(Frame *space) { /* if((cloak_frame > 0) && (cloak_frame < 300)) sprite->animate_character( pos, sprite_index, pallete_color[cloak_color[cloak_frame / 100]], space); else if ((cloak_frame >= 300)) { sprite->animate_character( pos, sprite_index, pallete_color[255], space); } else */ if (is_bot(control->channel) || !is_local(control->channel) || (!game_networked && num_network>1)) // bots and remote players are "hidden" sprite->animate_character( pos, sprite_index, pallete_color[255], space); else sprite->animate_character( pos, sprite_index, pallete_color[4], space); //Ship::animate(space); return; } SniperMissile::SniperMissile(Vector2 opos, double oangle, double ov, int odamage, double orange, int oarmour, Ship *oship, SpaceSprite *osprite) : Missile(oship, opos, oangle, ov, odamage, orange, oarmour, oship ,osprite) { explosionSprite = data->spriteWeaponExplosion; explosionFrameCount = explosionSprite->frames(); explosionFrameSize = 50; debug_id = 1011; } REGISTER_SHIP(KorvianSniper) --- NEW FILE: shpkorsi.cpp --- /* $Id: shpkorsi.cpp,v 1.1 2005/07/11 18:31:03 geomannl Exp $ */ #include "../ship.h" REGISTER_FILE #include "../melee/mview.h" #include "../melee/mcbodies.h" #define WEAPON_MASS .25 class KorvianSidekick : public Ship { public: IDENTITY(KorvianSidekick); public: double absorption; //added for gob double Sidekick_turn_step; double weaponRange; double weaponVelocity; int weaponDamage; int weaponArmour; double specialAccelRate; double specialSpeedMax; int specialHotspotRate; int specialArmour; double SidekickAngle; int recoil; int recoil_rate; int recoil_range; double Sidekick_turn_rate; SpaceObject* tugger; double tuggerDistance; double maxTuggerSpeed; double k; KorvianSidekick(Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code); virtual void calculate(); virtual void animate(Frame *space); virtual void calculate_turn_left(); virtual void calculate_turn_right(); virtual int activate_weapon(); virtual int activate_special(); virtual void calculate_hotspots(); }; class SidekickLaser : public PointLaser { public: IDENTITY(SidekickLaser); public: SidekickLaser(SpaceLocation *creator, SpaceLocation *lsource, SpaceObject *ltarget, Vector2 rel_pos = Vector2(0,0)) ; virtual void inflict_damage(SpaceObject *other); }; SidekickLaser::SidekickLaser(SpaceLocation *creator, SpaceLocation *lsource, SpaceObject *ltarget, Vector2 rel_pos) : PointLaser(creator, pallete_color[15], 0, 1, lsource, ltarget, rel_pos) { } void SidekickLaser::inflict_damage(SpaceObject *other) { } class SidekickMissile : public Missile { public: IDENTITY(SidekickMissile); public: SidekickMissile(double oangle, double ov, int odamage, double orange, int oarmour, Ship *oship, SpaceSprite *osprite); virtual void inflict_damage(SpaceObject *other); }; KorvianSidekick::KorvianSidekick(Vector2 opos, double shipAngle, ShipData *shipData, unsigned int code) : Ship(opos, shipAngle, shipData, code) { absorption = 0; collide_flag_sameship = bit(LAYER_SPECIAL); weaponRange = scale_range(get_config_float("Weapon", "Range", 0)); weaponVelocity = scale_velocity(get_config_float("Weapon", "Velocity", 0)); weaponDamage = get_config_int("Weapon", "Damage", 0); weaponArmour = get_config_int("Weapon", "Armour", 0); specialSpeedMax = scale_velocity(get_config_float("Special", "SpeedMax", 0)); double raw_specialHotspotRate = get_config_int("Special", "HotspotRate", 0); specialHotspotRate = scale_frames(raw_specialHotspotRate); specialAccelRate = scale_acceleration(get_config_float("Special", "AccelRate", 0), raw_specialHotspotRate); specialArmour = get_config_int("Special", "Armour", 0); SidekickAngle = 0.0; recoil = 0; recoil_rate = scale_frames(get_config_float("Turret", "RecoilRate",0)); if (recoil_rate > weapon_rate) recoil_rate = weapon_rate; recoil_range = get_config_int("Turret", "Recoil", 0); if (recoil_range < 0) recoil_range = 0; Sidekick_turn_rate = scale_turning(get_config_float("Turret", "TurnRate", 0)); Sidekick_turn_step = 0; tugger = NULL; tuggerDistance = scale_range(get_config_float("Special", "TowDistance", 0)); maxTuggerSpeed = specialSpeedMax; k = .01; //'springiness' constant of the Korvian's special debug_id = 1038; } int KorvianSidekick::activate_weapon() { if(fire_special) return(FALSE); add(new SidekickMissile( SidekickAngle, weaponVelocity, weaponDamage, weaponRange, weaponArmour, this, data->spriteWeapon)); accelerate(this, SidekickAngle, -WEAPON_MASS / mass * weaponVelocity, MAX_SPEED); recoil += recoil_rate; return(TRUE); } int KorvianSidekick::activate_special() { SpaceObject *o; double closestDistance = tuggerDistance, d; int foundTugger = FALSE; Query a; if(tugger == NULL) { for (a.begin(this, bit(LAYER_SHIPS) | bit(LAYER_SHOTS) | bit(LAYER_SPECIAL) | bit(LAYER_CBODIES), tuggerDistance); a.current; a.next()) { o = a.currento; if( (!o->isInvisible()) && (o->collide_flag_anyone & bit(LAYER_LINES)) && abs(get_vel() - o->get_vel()) < maxTuggerSpeed) { d = distance(o); if(d < closestDistance) { foundTugger = TRUE; closestDistance = d; tugger = o; } } } if(tugger == NULL) return FALSE; //play_sound2(data->sampleExtra[0]); } else { tugger = NULL; //play_sound2(data->sampleExtra[0]); } return TRUE; /* if(turn_left && (recoil<=0)) Sidekick_turn_step -= frame_time * Sidekick_turn_rate; if(turn_right && (recoil<=0)) Sidekick_turn_step += frame_time * Sidekick_turn_rate; while (fabs(Sidekick_turn_step) > (PI2/64)/2) { if (Sidekick_turn_step < 0.0 ) { SidekickAngle -= (PI2/64); Sidekick_turn_step += (PI2/64); } else { SidekickAngle += (PI2/64); Sidekick_turn_step -= (PI2/64); } } SidekickAngle = normalize(SidekickAngle, PI2); return(FALSE);*/ } void KorvianSidekick::calculate_turn_left() { if(turn_left /*&& (recoil<=0)*/) Sidekick_turn_step -= frame_time * Sidekick_turn_rate; //Ship::calculate_turn_left(); } void KorvianSidekick::calculate_turn_right() { if(turn_right /*&& (recoil<=0)*/) Sidekick_turn_step += frame_time * Sidekick_turn_rate; //Ship::calculate_turn_right(); } void KorvianSidekick::calculate() { if(tugger != NULL && !tugger->exists()) tugger = NULL; if(tugger != NULL && tugger->exists()) { double x = distance(tugger)-tuggerDistance; //Vector2 v = tugger->pos-pos; if(x > 0) { accelerate(tugger, trajectory_angle(tugger), k*x / mass, abs(tugger->get_vel())); tugger->accelerate(this, tugger->trajectory_angle(this), k*x / tugger->mass, MAX_SPEED); } } if(tugger != NULL && tugger->exists() && !tugger->isInvisible()) { game->add(new SidekickLaser(this, this, tugger)); } turn_right = TRUE; Ship::calculate_turn_right(); while (fabs(Sidekick_turn_step) > (PI2/64)/2) { if (Sidekick_turn_step < 0.0 ) { SidekickAngle -= (PI2/64); Sidekick_turn_step += (PI2/64); } else { SidekickAngle += (PI2/64); Sidekick_turn_step -= (PI2/64); } } SidekickAngle = normalize(SidekickAngle, PI2); if(recoil > 0) { recoil -= frame_time; if (recoil < 0) recoil = 0; } Ship::calculate(); } void KorvianSidekick::animate(Frame *space) { double rec; int Sidekick_index; /* ra = normalize(angle + SidekickAngle, PI2); Sidekick_index = get_index(ra); bmp = data->spriteShip->get_bitmap(64); clear_to_color( bmp, makecol(255,0,255)); sprite->draw(0, 0, sprite_index, bmp); rec = (double)recoil/recoil_rate; rec *= rec * recoil_range; data->spriteExtra->draw( -cos(ra)*rec, -sin(ra)*rec, Sidekick_index, bmp); data->spriteShip->animate(x,y,64, space); */ Ship::animate(space); Sidekick_index = get_index(SidekickAngle); rec = (double)recoil/recoil_rate; rec *= rec * recoil_range; data->spriteExtra->animate( pos - rec*unit_vector(SidekickAngle), // x - cos(angle+SidekickAngle)*rec, y - sin(angle+SidekickAngle)*rec Sidekick_index, space); return; } void KorvianSidekick::calculate_hotspots() { } SidekickMissile::SidekickMissile(double oangle, double ov, int odamage, double orange, int oarmour, Ship *oship, SpaceSprite *osprite) : Missile(oship, Vector2(0.0, 0.0), oangle, ov, odamage, orange, oarmour, oship, osprite) { // x += cos(angle) * 30.0; // y += sin(angle) * 30.0; pos += 30.0 * unit_vector(angle); explosionSprite = data->spriteWeaponExplosion; explosionFrameCount = 10; explosionFrameSize = 50; /*add(new Animation(this, pos, data->spriteExtraExplosion, 0, 10, 30, DEPTH_EXPLOSIONS));*/ debug_id = 1039; } void SidekickMissile::inflict_damage(SpaceObject* other) { if (other->mass) other->accelerate (this, this->angle, WEAPON_MASS / other->mass * abs(this->get_vel()), MAX_SPEED); Missile::inflict_damage(other); } REGISTER_SHIP(KorvianSidekick) --- shpwolmi.cpp DELETED --- --- shpkatas.cpp DELETED --- --- shpsefna.cpp DELETED --- --- shpzeksh.cpp DELETED --- |
From: Rob <geo...@us...> - 2005-07-11 18:31:12
|
Update of /cvsroot/timewarp/source/games In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3781/source/games Added Files: ggob_new.cpp ggob_new.h gsc1arena.cpp gsidescroll.cpp Log Message: --- NEW FILE: ggob_new.cpp --- /* $Id: ggob_new.cpp,v 1.1 2005/07/11 18:31:03 geomannl Exp $ */ #include <stdlib.h> #include <string.h> #include <stdio.h> #include <assert.h> #include <allegro.h> #ifdef ALLEGRO_MSVC #pragma warning (disable:4786) #endif #include "../melee.h" REGISTER_FILE #include "../scp.h" #include "../frame.h" #include "../melee/mgame.h" #include "../melee/mmain.h" [...1238 lines suppressed...] p->buckazoids += random() % 80; game->add(new RainbowRift()); } else { p->starbucks += random() % (1+p->value_starbucks); p->buckazoids += random() % (1+p->value_buckazoids); p->new_ship(reference_fleet->getShipType(i)); } die(); } } } return; } REGISTER_GAME(GobGame, "GOB") --- NEW FILE: gsc1arena.cpp --- /* $Id: gsc1arena.cpp,v 1.1 2005/07/11 18:31:03 geomannl Exp $ */ /* melee with fixed fleets ... */ #include <allegro.h> #include <stdio.h> #include <string.h> #include "../melee.h" #include "../other/radar.h" #include "../melee/mshppan.h" REGISTER_FILE #include "../melee/mframe.h" #include "../melee/mgame.h" #include "../melee/mmain.h" #include "../melee/mcbodies.h" #include "../melee/mview.h" #include "../other/orbit.h" #include "../melee/mitems.h" #include "../util/aastr.h" #include "../melee/mcontrol.h" //#define STATION_LOG #include "../melee/mlog.h" #include "twgui/twgui.h" #include "../melee/mfleet.h" #include "../other/ttf.h" #define Num_Planet_Pics 7 static const int max_players = 128; static const int max_fleet_ships = 32; class SC1Arena : public Game { public: int healthtoggle; //Fleet fleet[max_players]; Ship *playership[max_players]; bool ready2spawn[max_players]; int count_spawn[max_players]; int player_shipchoice; int lastkeys; virtual void init(Log *_log); bool GetSprites(SpaceSprite *Pics[], char *fileName, char *cmdStr, int numSprites, int attribs); SpaceSprite *GetSprite(char *fileName, char *spriteName, int attribs); virtual void calculate(); virtual void animate( Frame* frame ); virtual void animate_predict(Frame *frame, int time); virtual void quit(const char *message); void start_menu(int *select, char *title); virtual bool handle_key(int k); // event: int spawn_ship_playernum; int spawn_ship_fleetindex; void spawn_a_ship(int iplayer); void spawn_a_ship2(int iplayer, int iship); virtual void register_events(); }; void SC1Arena::init(Log *_log) { STACKTRACE; // this also initializes the players Game::init(_log); //prepare needs to be called before you add items, or do physics or graphics or anything like that. Don't ask why. prepare(); // set the anti-alias to 0: int antia_on = get_config_int(NULL, "Anti-AliasingOn",0);; set_tw_aa_mode(antia_on); add(new Stars()); // char starName[100]; // add some environment Planet *planet = create_planet(); add(new WedgeIndicator(planet, 75, 4)); int num_asteroids = 8; int i; for (i = 0; i < num_asteroids; i += 1) add(new Asteroid()); FULL_REDRAW = false; log_resetmode(); int v1 = 99; int v2 = 88; share(0, &v1); share(1, &v2); share_update(); set_config_file("gflmelee.ini"); int choice_fleet[max_players]; char txt[64]; sprintf(txt, "player(human) %i allegiance", p_local); start_menu(&choice_fleet[p_local], txt); // send (or receive) ... channel_server is locally either the server, or the client. // fleet numbers are fixed: fleet 0 vs fleet 1 for ( i = 0; i < num_network; ++i ) { //channel_current = channel_network[i]; share(i, &choice_fleet[i]); //log_int(choice_fleet[i]); do not use log-int here, since you've to actually send data } // and the bots ? // only the server can set bots, so choose the channel server. for ( i = num_network ; i < num_players; ++i ) { if (!player[i]) continue; if (hostcomputer()) { char txt[64]; sprintf(txt, "player(bot) allegiance %i", i); // these are chosen by the server... start_menu(&choice_fleet[i], txt); } share(0, &choice_fleet[i]); } share_update(); // initialize the fleets from the ini file ... int ifleet; set_config_file("gflmelee.ini"); for ( ifleet = 0; ifleet < num_players; ++ifleet ) { if (!player[ifleet]) continue; char ident[512]; sprintf(ident, "Alliance%02i", choice_fleet[ifleet]+1); // scan this section for the ships that are available ... int Nships; Nships = get_config_int(ident, "Nships", 0); if (Nships > max_fleet_ships) tw_error("Too many ships in this fleet"); int iship; for ( iship = 0; iship < Nships; ++iship ) { char identshp[512] = ""; sprintf(identshp, "ship%02i", iship + 1); // note, we've to store shipname in memory, cause // the ini operations in the ship-init overwrite value in st. char shipname[512]; const char *st; st = get_config_string(ident, identshp, 0); strcpy(shipname, st); player[ifleet]->fleet->addShipType(shiptype(shipname)); } } // start with nothing for each player... for ( i = 0; i < num_players; ++i ) { if (!player[i]) continue; // the player starts with no ship playership[i] = 0; // initially, you're allowed to choose a ship, cause you got no ship yet! ready2spawn[i] = true; count_spawn[i] = 0; // is already done in Game::init_players // and also, define a team for the player //player[i]->team = new_team(); // and, a color (for indicators) //player[i]->color = palette_color[player[i]->team]; } player_shipchoice = 0; lastkeys = 0; healthtoggle = 0x0FFFFFFFF; spawn_ship_playernum = -1; spawn_ship_fleetindex = -2; } void SC1Arena::quit(const char *message) { Game::quit(message); } void SC1Arena::animate_predict(Frame *frame, int time) { STACKTRACE; Game::animate_predict(frame, time); } void SC1Arena::animate( Frame* frame ) { STACKTRACE; 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; } } } } void SC1Arena::start_menu(int *select, char *titletext) { STACKTRACE;; ///* // *select = 0; // return; unscare_mouse(); show_mouse(window->surface); int i; FONT *usefont;// = videosystem.get_font(i); int points = 24 * (screen->w/800.0); usefont = load_ttf_font("fonts/jobbernole.ttf", points, 0, 1.5); reset_color_props(); // view->frame->prepare(); // AreaReserve *A; TWindow *A; // this is needed for a non-flickering image BITMAP *temp_screen = 0; temp_screen = create_video_bitmap(screen->w, screen->h); if (!temp_screen) temp_screen = create_bitmap(screen->w, screen->h); // this uses a log_file as well ... to determine the ref screen size. A = new TWindow("interfaces/sc1arena", 0, 0, temp_screen); // other stuff resets the log file, so make sure you got the correct one. set_config_file("gflmelee.ini"); //log_file("gSC1Arena.ini"); // don't use log_file, cause that's in memory, while we'd like to save settings on disk. int Nfleets; Nfleets = get_config_int("FleetInit", "Nalliances", 0); if ( Nfleets == 0 ) { tw_error("No fleets defined"); } // check all the fleet names // at most 99 fleets ... seems safe enough char flname[99][64]; for ( i = 0; i < Nfleets; ++i ) { char allyid[64]; sprintf(allyid, "Alliance%02i", i+1); strncpy(flname[i], get_config_string(allyid, "Name", "<undefined>"), 60); } int col; Button *prev, *next, *ok; TextButton *title; TextButton *fl; col = makecol(0,0,0); // col[1] = makecol(200,200,200); prev = new Button(A, "prev_"); next = new Button(A, "next_"); // up[1] = new Button(A, "up2_"); // down[1] = new Button(A, "down2_"); ok = new Button(A, "ok_"); fl = new TextButton(A, "text_", usefont); fl->set_text("", col); title = new TextButton(A, "title_", usefont); title->set_text(titletext, col); A->tree_doneinit(); // fl[1] = new TextButton(A, "text2_", usefont); // fl[1]->set_text("", col[1]); // the window manager. // WindowManager *winman; // winman = new WindowManager; // winman->add(A); //int select[2]; *select = get_config_int("FleetInit", "PlayerAlliance", 0); // select[1] = get_config_int("FleetInit", "EnemyAlliance", 0); if (*select < 0) *select = 0; if (*select > Nfleets-1) *select = Nfleets-1; A->tree_doneinit(); //A->tree_setscreen(temp_screen); while ( !ok->flag.left_mouse_press ) { idle(5); A->tree_calculate(); A->tree_animate(); blit(temp_screen, screen, 0, 0, 0, 0, temp_screen->w, temp_screen->h); if (next->flag.left_mouse_press) { ++*select; if ( *select > Nfleets-1 ) *select = 0; } if (prev->flag.left_mouse_press) { --*select; if ( *select < 0 ) *select = Nfleets-1; } fl->set_text(flname[*select], col); } set_config_int("FleetInit", "PlayerAlliance", *select); // set_config_int("FleetInit", "EnemyAlliance", select[1]); show_mouse(0); destroy_bitmap(temp_screen); show_mouse(screen); } void SC1Arena::spawn_a_ship2(int iplayer, int iship) { count_spawn[iplayer] += 1; int N = player[iplayer]->fleet->getSize(); if ( iship < 0 || iship >= N ) { tw_error("Error in fleet choice"); } ShipType *t = player[iplayer]->fleet->getShipType(iship); if (!t) { tw_error("Mistake in transmitting fleet number"); } Ship *s; s = create_ship(t->id, player[iplayer]->control, tw_random(map_size), tw_random(PI2), player[iplayer]->team); playership[iplayer] = s; player[iplayer]->fleet->clear_slot(iship); add ( new WedgeIndicator ( s, 30, player[iplayer]->team ) ); // this uses a palette index... add ( new HealthBar(s, &healthtoggle)); add( s->get_ship_phaser() ); } void SC1Arena::spawn_a_ship(int iplayer) { // always use channel_current if (!log_synched) { // this is for write+read -mode // unfortunately, in read-mode, this gloabal var will be overwritten, thus upsetting the next write mode call... duh... log_int(spawn_ship_playernum); log_int(spawn_ship_fleetindex); if (spawn_ship_playernum != iplayer) tw_error("Player index mismatch in spawn_a_ship (write)"); // disable spawning the ship again. ready2spawn[spawn_ship_playernum] = false; } else { int i, k; log_int(i); log_int(k); if (i != iplayer) tw_error("Player index mismatch in spawn_a_ship (read)"); // this happens in read-mode only spawn_a_ship2(i, k); // you're allowed to spawn a new ship (as soon as this ship is dead) ready2spawn[i] = true; } } //static bool has_registered = false; void SC1Arena::register_events() { Game::register_events(); EVENT(SC1Arena, spawn_a_ship); } bool SC1Arena::handle_key(int k) { Game::handle_key(k); switch (k >> 8) { case KEY_H: healthtoggle = ~healthtoggle; break; } return true; } void SC1Arena::calculate() { STACKTRACE; Game::calculate(); // and then what ... check if the fleets/ player ships are alive ? //message.print(1500, 14, "players[%i] network[%i]", num_players, num_network); int i; for ( i = 0; i < num_players; ++i ) { if (!player[i]) continue; if (playership[i] && !playership[i]->exists()) playership[i] = 0; // bots: these should choose a new ship randomly if (!playership[i] && i >= num_network) { if (player[i]->fleet->getSize() > 0) { int k; k = tw_random( player[i]->fleet->getSize() ); // issue an event to create the ship (not really needed here cause it's a bot but well...): spawn_ship_playernum = i; spawn_ship_fleetindex = k; if ( i < 0 || i > num_players) { tw_error("Shouldn't happen"); } if ( k < 0 || k >= player[i]->fleet->getSize() ) { tw_error("Error in fleet choice"); } // do NOT use a CALL for this ... cause it's local, really ... spawn_a_ship2(i, k); } } } // the local player should choose a new ship manually ... note that in single-player mode, // there can be >1 local players, so: int p; for ( p = 0; p < num_network; ++p ) { if (!player[p]) continue; if (player[p]->islocal() && !playership[p]) { int keys = player[p]->control->keys; if (player[p]->fleet->getSize() > 0) { if ((keys & keyflag::right) && !(lastkeys & keyflag::right)) ++player_shipchoice; if ((keys & keyflag::left) && !(lastkeys & keyflag::left)) --player_shipchoice; if (player_shipchoice < 0) player_shipchoice = player[p]->fleet->getSize()-1; if (player_shipchoice > player[p]->fleet->getSize()-1) player_shipchoice = 0; if ((keys & keyflag::fire) && !(lastkeys & keyflag::fire) && ready2spawn[p]) { // issue an event to create the ship: spawn_ship_playernum = p; spawn_ship_fleetindex = player_shipchoice; if ( p < 0 || p >= num_network) { tw_error("Shouldn't happen"); } CALL(spawn_a_ship, p); } } else { // you should be able to focus on another ship ... if ((keys & keyflag::right) && !(lastkeys & keyflag::right)) { // try to focus on the next available ship (enemy or not, it does not matter) // (not supported yet...) } } lastkeys = keys; } } } REGISTER_GAME (SC1Arena, "SC1 Arena"); --- NEW FILE: ggob_new.h --- /* $Id: ggob_new.h,v 1.1 2005/07/11 18:31:03 geomannl Exp $ */ #ifndef __GGOB_H__ #define __GGOB_H__ #ifdef ALLEGRO_MSVC #pragma warning (disable:4786) // identifier was truncated to '255' characters in the browser information #endif #include <list> #include <string> #include <map> #include "melee.h" #include "melee/mframe.h" #include "melee/mgame.h" #include "melee/mitems.h" #include "melee/mcbodies.h" #include "other/gquest.h" #include "other/gevent.h" class Upgrade; class GobStation; class GobGame; class GobPlayer { public: int channel; ~GobPlayer(); Ship *ship; Control *control; ShipPanel *panel; std::map<std::string, int> pair; int total; //total upgrades purchased, used in calculating price of future upgrades int starbucks; int buckazoids; int kills; int value_starbucks; int value_buckazoids; TeamCode team; void init(Control *c, TeamCode team, GobGame * g); void died(SpaceLocation *killer); void new_ship(ShipType *type); int charge (char *name, int price_starbucks, int price_buckazoids) ; Upgrade **upgrade_list; //std::list<Upgrade_Listade*> upgrade_list; } ; class GobEnemy { public: Ship *ship; int starbucks; int buckazoids; void init(Ship *ship, int kill_starbucks, int kill_buckazoids); void died (SpaceLocation *what); } ; class GobAsteroid : public Asteroid { public: virtual int handle_damage (SpaceLocation *source, double normal, double direct); virtual void death(); }; class GobGame : public Game, public EventHandler { public: QuestSource* quest_source; virtual ~GobGame(); TeamCode enemy_team; virtual void calculate(); virtual void ship_died(Ship *who, SpaceLocation *source); virtual void preinit(); virtual void init (Log *log); virtual void play_sound (SAMPLE *sample, SpaceLocation *source, int vol = 256, int freq = 1000); int gobplayers; // GobPlayer **gobplayer; std::list<GobPlayer*> gobplayer; virtual void add_gobplayer(Control *control); virtual GobPlayer* get_player(SpaceLocation *what); unsigned int max_enemies; std::list<GobEnemy*> gobenemy; // virtual int get_enemy_index(SpaceLocation *what); virtual GobEnemy* get_enemy(SpaceLocation *what); // protected: virtual void fps (); void add_new_enemy(std::string type = "", Vector2* pos = NULL); int next_add_new_enemy_time; SpaceSprite *defenderSprite; public: int num_planets; // void save_game(); // void load_game(); // void config(bool option); // virtual void quit(const char *message); }; class GobStation : public Orbiter { std::string name; public: const char *build_type; std::string background_pic; GobStation ( SpaceSprite *pic, SpaceLocation *orbit_me, const char *ship, const char *background, std::string sname ); virtual ~GobStation(); std::string GetStationName(){return name;} virtual void buy_new_ship_menu(GobPlayer *s) ; virtual void inflict_damage(SpaceObject *other); virtual void station_screen (GobPlayer *s); virtual void upgrade_menu(GobStation *station, GobPlayer *gs) ; }; class Upgrade { public: enum { active, inactive }; char *name; int starbucks; int buckazoids; int status; int num; int index; virtual bool update(Ship *ship, GobStation *station, GobPlayer *gp) = 0; //true if listed virtual void execute(Ship *ship, GobStation *station, GobPlayer *gp) = 0; virtual void charge(GobPlayer *gp); virtual void clear(Ship *oship, Ship *nship, GobPlayer *gp); virtual Upgrade *duplicate() = 0; }; class RainbowRift : public SpaceLocation { public: enum { n = 2 }; float p[n * 6 + 2]; RGB c[n]; int next_time, next_time2; RainbowRift (); virtual void animate ( Frame *frame ); virtual void calculate () ; void squiggle(); }; #endif // __GGOB_H__ --- NEW FILE: gsidescroll.cpp --- #include <allegro.h> //allegro library header #include "../melee.h" //used by all TW source files. well, mostly. REGISTER_FILE //done immediately after #including melee.h, just because I said so #include "../melee/mgame.h" //Game stuff #include "../melee/mcbodies.h" //asteroids & planets #include "../melee/mship.h" //ships #include "../melee/mlog.h" //networking / demo recording / demo playback #include "../melee/mcontrol.h" //controllers & AIs #include "../melee/mview.h" //Views & text messages #include "../melee/mshppan.h" //ship panels... #include "../melee/mitems.h" //indicators... #include "../melee/mfleet.h" //fleets... #include "../scp.h" static const int max_enemies = 1024; static const int max_timers = 32; const int maxgroup = 16; struct SideScroll_GroupInfo; /** information about individual ship(s) in a group */ struct SideScroll_ShipInfo { SideScroll_GroupInfo *group; Ship *ship; int current_timer; void calculate(int timeframe, Game *game, Vector2 screen_pos, int team); // the local timer: starts at 0 int localtime; SideScroll_ShipInfo(SideScroll_GroupInfo *agroup); void create_ship(Game *game, Vector2 screen_pos, int team); }; /** a group of ships */ struct SideScroll_GroupInfo { bool status; char shipid[64]; double spawnpos; Vector2 relpos; double angle; int Ntimers; int timer[max_timers]; int key[max_timers]; // how many ships are spawned in this group. They move in a line. int groupnum; // how many of the group are spawned int numspawned; // spacing (in time) between ships in the group. int groupinterval; // the local timer: starts at 0 int localtime; // time at which the next ship will be spawned. Starts at 0. int next_time; SideScroll_GroupInfo(); virtual ~SideScroll_GroupInfo(); SideScroll_ShipInfo *shipinfo[maxgroup]; void calculate(int timeframe, Game *game, Vector2 screen_pos, int team); // if true, then this group has been given the start-signal. bool startnow; void initiate(); }; SideScroll_ShipInfo::SideScroll_ShipInfo(SideScroll_GroupInfo *agroup) { group = agroup; current_timer = 0; localtime = 0; ship = 0; } void SideScroll_ShipInfo::create_ship(Game *game, Vector2 screen_pos, int team) { Ship *s; s = game->create_ship(channel_none, group->shipid, "WussieBot", screen_pos + group->relpos, group->angle, team); s->control->auto_update = false; s->vel = s->speed_max * unit_vector(s->angle); game->add(s); // scale the crew: s->crew = 1 + int(s->crew/20.0); s->collide_flag_sameteam = 0; ship = s; } void SideScroll_ShipInfo::calculate(int timeframe, Game *game, Vector2 screen_pos, int team) { if (!ship) return; // what if the ship is killed... if (!ship->exists()) { ship = 0; return; } localtime += timeframe; if (localtime > group->timer[current_timer]) { // jump to the next key-command ++current_timer; } if (current_timer >= group->Ntimers) { // clean up the ship ship->state = 0;//die(); ship = 0; } else { // apply keys to the ship control ship->control->keys = group->key[current_timer]; } } SideScroll_GroupInfo::SideScroll_GroupInfo() { status = true; shipid[0] = 0; Ntimers = 0; localtime = 0; next_time = 0; numspawned = 0; startnow = false; int i; for ( i = 0; i < maxgroup; ++i ) { shipinfo[i] = 0; } } SideScroll_GroupInfo::~SideScroll_GroupInfo() { int i; for ( i = 0; i < maxgroup; ++i ) { if (shipinfo[i]) delete shipinfo[i]; } } void SideScroll_GroupInfo::initiate() { startnow = true; } void SideScroll_GroupInfo::calculate(int timeframe, Game *game, Vector2 screen_pos, int team) { if (!startnow) return; if (!status) return; // check if there's at least one live ship left... status = false; if (numspawned < groupnum) status = true; // there will be more spawned. if (numspawned < groupnum && localtime >= next_time) { // spawn the next ship in the group. shipinfo[numspawned] = new SideScroll_ShipInfo(this); shipinfo[numspawned]->create_ship(game, screen_pos, team); next_time += groupinterval; ++numspawned; } localtime += timeframe; // check all the ships ... // and update their stats. int i; for ( i = 0; i < numspawned; ++i ) { if (shipinfo[i]->ship) { shipinfo[i]->calculate(timeframe, game, screen_pos, team); status = true; } } } class GSideScroll : public Game { //declaring our game type public: virtual void init(Log *_log) ; //happens when our game is first started virtual void init_players(); virtual void calculate(); virtual void init_objects(); virtual void animate(Frame *f); TeamCode team_human, team_enemy; // keeping track of level: void init_next_level(); int level_count; // info about this level: SideScroll_GroupInfo enemy_info[max_enemies]; int Nenemies; int current_enemy; Vector2 screen_pos; double screen_vel; Vector2 battlearea; double startpos; }; void GSideScroll::init_objects() { // do nothing ? } void GSideScroll::init_next_level() { ++ level_count; set_config_file("gsidescroll.ini"); char tmp[512]; sprintf(tmp, "level%i", level_count+1); Nenemies = get_config_int(tmp, "N", 0); if (Nenemies > max_enemies) tw_error("Trying to initialize too many enemies"); int i; for ( i = 0; i < Nenemies; ++i ) { char id[512]; sprintf(id, "enemy%i", i+1); char **args; int Nargs; args = get_config_argv(tmp, id, &Nargs); if (Nargs < 5) { tw_error("Not enough data for the enemy ship"); } int k = 0; // at which position is the ship spawned (start at 0 and count upwards) enemy_info[i].spawnpos = atof(args[k]); ++k; // how many ships, and at which time interval? enemy_info[i].groupnum = atoi(args[k]); ++k; if (enemy_info[i].groupnum > maxgroup) enemy_info[i].groupnum = maxgroup; enemy_info[i].groupinterval = atoi(args[k]); ++k; // read the ship name strncpy(enemy_info[i].shipid, args[k], sizeof(enemy_info[k].shipid)-1); ++k; // read ship position and angle: enemy_info[i].relpos.x = atof(args[k]); // where on the screen does it appear ++k; enemy_info[i].relpos.y = atof(args[k]); ++k; enemy_info[i].angle = atof(args[k])*PI/180.0; // initial orientation of the ship (in degrees) ++k; // other ship parameters: // velocity is at max. // key = 0 // read the timers and keys for this ship: int count = 0; while ( k+1 < Nargs ) { // first, read the keys. // this key-combo is applied until time exceeds the timer that follows. if (strlen(args[k]) < 5) tw_error("Expected key info, in the form of 11111 (left/right/thrust/fire/special) "); enemy_info[i].key[count] = 0; if (args[k][0] == '1') enemy_info[i].key[count] |= keyflag::left; if (args[k][1] == '1') enemy_info[i].key[count] |= keyflag::right; if (args[k][2] == '1') enemy_info[i].key[count] |= keyflag::thrust; if (args[k][3] == '1') enemy_info[i].key[count] |= keyflag::fire; if (args[k][4] == '1') enemy_info[i].key[count] |= keyflag::special; ++k; // read the timer for the next key. (in milliseconds) enemy_info[i].timer[count] = atoi(args[k]); ++k; ++count; } enemy_info[i].Ntimers = count; } current_enemy = 0; screen_pos.y = size.y - startpos; // start at bottom (and move up) screen_pos.x = size.x/2; // stay focused on the middle. } void GSideScroll::init_players() { team_human = new_team(); team_enemy = new_team(); Game::init_players(); // give a ship to each player int p; for ( p = 0; p < num_network; ++p ) { //now we're back to the way we were in SampleGame1 for a little bit Ship *s = create_ship("orzne", player[p]->control, Vector2(size.x/2, size.y-100.0), -0.5*PI, team_human); add(s); add_focus(s, player[p]->channel); } } void GSideScroll::init(Log *_log) { Game::init(_log); set_config_file("gsidescroll.ini"); size.x = get_config_int("init", "mapw", 2000); size.y = get_config_int("init", "maph", 10000); screen_vel = get_config_int("init", "velocity", 100) * 1E-3; // in file: in pixels/sec, in game: in pixels/millisec battlearea.x = get_config_int("init", "areaw", 800); battlearea.y = get_config_int("init", "areah", 600); startpos = get_config_int("init", "startpos", 600); // copy to global values. prepare(); add(new Stars()); change_view("Hero"); //sets it to Hero view mode view_locked = true; //prevents the view mode from being changed through the menu view->window->locate(0,0,0,0, 0,1,0,1); //we tell the main window to occupy the screen region to the left of the ship panels friendly_fire = 0; //here we override the normal settings for friendly fire to make sure that human players can't hurt each other level_count = -1; init_next_level(); } void GSideScroll::calculate() { screen_pos.y -= screen_vel * frame_time; // fix player position(s): double xmin = screen_pos.x - 0.5*battlearea.x + 20.0; double xmax = screen_pos.x + 0.5*battlearea.x - 20.0; double ymin = screen_pos.y - 0.5*battlearea.y + 20.0; double ymax = screen_pos.y + 0.5*battlearea.y - 20.0; int p; for ( p = 0; p < num_network; ++p ) { Ship *s = player[p]->control->ship; double x, y; x = s->pos.x; y = s->pos.y; // test boundaries if (x < xmin) s->pos.x = xmin; if (x > xmax) s->pos.x = xmax; if (y < ymin) s->pos.y = ymin; if (y > ymax) s->pos.y = ymax; s->pos = s->normal_pos(); } // initialize enemies: double y = size.y - screen_pos.y; while (current_enemy < Nenemies && enemy_info[current_enemy].spawnpos <= y) { // if the player passes a spawnpoint, an enemy is added. enemy_info[current_enemy].initiate(); ++current_enemy; } // check the enemy array. int i; bool all_gone = true; for ( i = 0; i < Nenemies; ++i ) { if (enemy_info[i].status) // check if there are still active enemies somewhere. all_gone = false; enemy_info[i].calculate(frame_time, this, screen_pos, team_enemy); } // if all the ships of the current level are treated if (all_gone) { init_next_level(); // initialize next level if (Nenemies == 0) // if the level is empty, then exit. quit("bye"); } // if the player is dead if (!player[0]->control->ship) { quit("bye"); } // normal game calculations (ship position updates etc) Game::calculate(); } void GSideScroll::animate(Frame *f) { // override zoom settings: ::space_center = screen_pos; ::space_center_nowrap = screen_pos; ::space_zoom = (screen->w / battlearea.x); message.print(1, 7, "crew: %2i batt %2i pos = %4i", int(player[0]->control->ship->crew), int(player[0]->control->ship->batt), int(size.y-screen_pos.y)); Game::animate(f); } REGISTER_GAME(GSideScroll, "Sidescroll") |
Update of /cvsroot/timewarp/interfaces/sc1arena In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3781/interfaces/sc1arena Added Files: backgr.bmp backgr.rledat info.txt next_default.bmp ok_default.bmp prev_default.bmp text_backgr.bmp title_backgr.bmp Log Message: --- NEW FILE: title_backgr.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: ok_default.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: next_default.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: info.txt --- interfaces/sc1arena/title_backgr_y = 10 interfaces/sc1arena/title_backgr_x = 59 interfaces/sc1arena/text_backgr_y = 76 interfaces/sc1arena/text_backgr_x = 58 interfaces/sc1arena/ok_default_y = 10 interfaces/sc1arena/ok_default_x = 405 interfaces/sc1arena/next_default_y = 78 interfaces/sc1arena/next_default_x = 542 interfaces/sc1arena/prev_default_y = 78 interfaces/sc1arena/prev_default_x = 13 [FleetInit] PlayerAlliance = 0 --- NEW FILE: backgr.rledat --- (This appears to be a binary file; contents omitted.) --- NEW FILE: text_backgr.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: backgr.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: prev_default.bmp --- (This appears to be a binary file; contents omitted.) |
From: Rob <geo...@us...> - 2005-07-11 18:31:09
|
Update of /cvsroot/timewarp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3781 Added Files: MSVCP60D.DLL MSVCRTD.DLL gsidescroll.ini license.txt Log Message: --- NEW FILE: MSVCRTD.DLL --- (This appears to be a binary file; contents omitted.) --- NEW FILE: license.txt --- Timewarp is distributed under the GPL license (General Public License). --- NEW FILE: gsidescroll.ini --- [init] ; map width (in pixels) mapw = 3000 ; map height (in pixels) maph = 10000 ; velocity of the ship (in pixels/second) velocity = 20 ; battle area size: areaw = 1600 areah = 1200 ; start a little up, to avoid (visual) map wrap. ; Also you should avoid going all the way through the end of the map startpos = 1000 ; There can be at most 100 levels. No need to specify how many levels there are. ; A level must have at least 1 enemy. [level1] N = 3 ; keys: left-right-thrust-fire-special ; timer: in milliseconds. Keys are applied until timer is reached. Ship timer starts at 0, ; and counts upwards. ; There can be at most 32 timers. ; ship is cleaned up when last timer expires ; spawnpos num interval shipid xrel yrel angle keys timer keys timer enemy1 = 1000 3 500 kzedr -100 100 90 11010 1000 02000 10000 enemy2 = 1200 3 500 kzedr 100 100 -90 11000 1000 10110 10000 enemy3 = 1400 3 500 kzedr 100 100 -90 11000 1000 10110 10000 --- NEW FILE: MSVCP60D.DLL --- (This appears to be a binary file; contents omitted.) |
From: Rob <geo...@us...> - 2005-07-11 17:04:27
|
Update of /cvsroot/timewarp/ships In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25980/ships Added Files: shpkorsi.dat shpkorsi.ini shpkorsi.txt shpkorsn.dat shpkorsn.ini shpkorsn.txt Log Message: --- NEW FILE: shpkorsn.txt --- The Korvian Sniper is a sniping vessel equipped with a powerful long-range torpedo. The Sniper is always cloaked. The secondary weapon does two things: first, it brings the ship to an immediate halt; second, it activates an alarm that sounds a fraction of a second before the proper time to fire based on the target ship's current velocity. NOTES: This ship is based on the code for the Ilwrath Avenger, and I still haven't figured out how to change the victory music. --- NEW FILE: shpkorsi.dat --- (This appears to be a binary file; contents omitted.) --- NEW FILE: shpkorsn.dat --- (This appears to be a binary file; contents omitted.) --- NEW FILE: shpkorsi.ini --- [Info] Origin = TWb SC2Cost = 10 TWCost = 30 Name1 = Korvian Name2 = Sidekick Origin = SC3 Coders = Carlsson Code = KorvianSidekick [Ship] Crew = 40 CrewMax = 40 Batt = 40 BattMax = 40 SpeedMax = 10 AccelRate = 0 TurnRate = 1 RechargeAmount = 1 RechargeRate = 2 WeaponDrain = 4 WeaponRate = 2 SpecialDrain = 10 SpecialRate = 10 HotspotRate = 0 Mass = 15 [Weapon] Range = 30 Velocity = 220 Damage = 3 Armour = 3 [Special] AccelRate = 10 SpeedMax = 40 TowDistance = 10 HotspotRate = 0 Armour = 3 [Turret] TurnRate = 2 RecoilRate = 3 Recoil = 7 [AI3_Default] Weapon = Precedence Special = Field Special2 = Proximity Special3 = Plus_Fire Special_Timer = 50 Special_Range = 6 [Names] NumNames = 16 CaptName1 = Erik CaptName2 = Johnny CaptName3 = Chris CaptName4 = k001011 CaptName5 = k110110 CaptName6 = k001011 CaptName7 = k010010 CaptName8 = k000010 CaptName9 = k110111 CaptName10 = k101101 CaptName11 = k101111 CaptName12 = k001011 CaptName13 = k001000 CaptName14 = k101110 CaptName15 = k010111 CaptName16 = k000101 --- NEW FILE: shpkorsi.txt --- The Korvian Sidekick is designed to be an assistant for other vessels. The primary fire is a long-range machine gun that sits atop a rotating turret. The Sidekick's movement is controlled by the secondary weapon, which activates a short-range gravity field that causes the Sidekick to follow a nearby object, such as an asteroid or a ship. The Sidekick is very useful in team games, as it can latch on to a fast ship for assistance during attack. NOTES: The velocity of the object that the Sidekick attaches to must be close to that of the Sidekick. This ship is based on the code for the Orz Nemesis, and I still haven't figured out how to change the victory music. --- NEW FILE: shpkorsn.ini --- [Info] Origin = TWb SC1Cost = 10 SC2Cost = 10 TWCost = 30 Name1 = Korvian Name2 = Sniper Origin = TWa Coders = Carlsson Code = KorvianSniper [Ship] Crew = 8 CrewMax = 8 Batt = 30 BattMax = 30 SpeedMax = 28 AccelRate = 8 TurnRate = 2 RechargeAmount = 4 RechargeRate = 4 WeaponDrain = 20 WeaponRate = 4 SpecialDrain = 3 SpecialRate = 2 HotspotRate = 0 Mass = 10 [Weapon] Range = 80 Velocity = 350 Damage = 7 Armour = 4 [AI3_Default] Weapon = Precedence Weapon_Range = 4 Special = Cloak [Names] NumNames = 16 CaptName1 = Erik CaptName2 = Johnny CaptName3 = Chris CaptName4 = k001011 CaptName5 = k110110 CaptName6 = k001011 CaptName7 = k010010 CaptName8 = k000010 CaptName9 = k110111 CaptName10 = k101101 CaptName11 = k101111 CaptName12 = k001011 CaptName13 = k001000 CaptName14 = k101110 CaptName15 = k010111 CaptName16 = k000101 CaptName16 = Manglor |