Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› English - gamesets —› game mechanics

Autor Mitteilung
verfasst am: 30.06.2008, 21:32
Registrierdatum: 30.11.2007, 21:58

 Beiträge: 165
wel i dont get german so i can't look in other forums but how do weapons and armor work?
verfasst am: 30.06.2008, 22:45
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
Basically the weapon needs a piercing strenght higher than the armor value to do any damage at all. Depending on how much higher the piercing value is above the armor value, a greater percentage of the damage is substracted from the hitpoints of the target.
verfasst am: 01.07.2008, 11:00
Registrierdatum: 30.11.2007, 21:58

 Beiträge: 165
and what is the formula?
verfasst am: 01.07.2008, 16:18
Programming

Registrierdatum: 01.07.2008, 07:53

 Beiträge: 109
http://www.xforce-online.de/forum/index.php?action=vthread&forum=29&to pic=1572

Some examples http://www.xforce-online.de/forum/index.php?action=vthread&forum=3&top ic=1111

Basically:

damage=weapon_power*(1-(armor/piercing_value))

weapon_power=splinter_power=explosion_power
piercing_value=splinter_strengh=explosion_strengh

Explosion power is divide by 4 on every meter (3 feet).

??? Piercing_value is discreased by (armor+10) after each objects. Armor value for: indestructibly=150 steel=75 concrete=50 wood=25 Pasteboard=15 other=5 ???


PS Sorry, i'm very bad both in English and Deutsch. Please confirm this data
verfasst am: 01.07.2008, 16:39
Admin, Spielsatz GalWar

Registrierdatum: 31.08.2005, 21:51

 Beiträge: 5595
yes and no - the problem is that the formula alone is not enough to calculate the damage. I would have posted it above if it was that simple.

You also need to know the armor value of each object the projectile had pierced before - and the armor of an alien and the alien itself are two different objects to be damaged and possible pierced.
verfasst am: 01.07.2008, 17:06
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
function TISOObject.PenetrateObject(Power: Integer): Boolean;
begin
  result:=true;
  if GetSchadensTyp=stGlobal then
    exit;

  inc(fResistance,Power);
  result:=fResistance<fPower;

  if not result then
    Explode;
end;
function TGameFigure.DoTreffer(ISOObject: TObject): boolean;
var
  Dummy    : Integer;
  Fig      : TGameFigure;
  Treffer  : TTrefferParameter;
  IStatus  : Integer;
  OffSets  : TPoint;
begin
  Assert(ISOObject is TISOObject,'TGameFigure.DoTreffer: Object ist kein gültiges ISOObject');

  result:=false;

  if (fManager=nil) or fDead then
    exit;

  // Schaden an der Panzerung verursachen (bisher nur theoretisch
  //fManager.DamagePanzer(TISOObject(ISOObject).GetDamagePoints);

  // Objekt ist an der Panzerung abgeprallt (bzw. Verringerung der Durchschlagskraft, falls Panzerung durchdrungen wird)
  if (GetTrefferZone(ISOObject)=tzHeadLeft) or (GetTrefferZone(ISOObject)=tzHeadRight) or (GetTrefferZone(ISOObject)=tzHeadFront) or (GetTrefferZone(ISOObject)=tzHeadBack) then
    if not TISOObject(ISOObject).PenetrateObject(fManager.ArmHead) then
      exit;
  if (GetTrefferZone(ISOObject)=tzTorsoLeft) or (GetTrefferZone(ISOObject)=tzTorsoRight) or (GetTrefferZone(ISOObject)=tzTorsoFront) or (GetTrefferZone(ISOObject)=tzTorsoBack) then
    if not TISOObject(ISOObject).PenetrateObject(fManager.ArmTorso) then
      exit;
  if (GetTrefferZone(ISOObject)=tzFootLeft) or (GetTrefferZone(ISOObject)=tzFootRight) or (GetTrefferZone(ISOObject)=tzFootFront) or (GetTrefferZone(ISOObject)=tzFootBack) then
    if not TISOObject(ISOObject).PenetrateObject(fManager.ArmLegs) then
      exit;


  Treffer.Strength:=random(10)+(TISOObject(ISOObject).GetDamagePoints-10 );
  Treffer.Zone:=GetTrefferZone(ISOObject);

  result:=fManager.DoTreffer(Treffer);

  // Natürlichen Widerstand der Einheit berücksichtigen (verringert nur den Schaden
  // bei nachfolgenden Einheiten)
  TISOObject(ISOObject).PenetrateObject(10);

  if (fEinsatzKI<>nil) then
    TUnitKI(fEinsatzKI).DoTreffer(TISOObject(ISOObject).Figure);

...
function TGameFigureManager.DoTreffer(var Treffer: TTrefferParameter): boolean;
const
  SchadensWerte: Array[TTrefferZone] of Double = (
                 {tzNone}               0.0,
                 {tzGlobal}             1.0,
                 {tzHeadLeft}           1.3,
                 {tzHeadRight}          1.3,
                 {tzHeadFront}          1.6,
                 {tzHeadBack}           1.2,
                 {tzTorsoLeft}          1.0,
                 {tzTorsoRight}         1.0,
                 {tzTorsoFront}         0.9,
                 {tzTorsoBack}          1.1,
                 {tzFootLeft}           1.1,
                 {tzFootRight}          1.1,
                 {tzFootFront}          1.1,
                 {tzFootBack}           1.1);

var
  Schaden : Integer;
  Abwehr  : double;
begin
  {$IFDEF NOTREFFER}
  result:=false;
  exit;
  {$ENDIF}
(*  if Treffer.Power>0 then
    {$IFDEF EXTERNALFORMULARS}
    Abwehr:=formular_utils_SolveFormular('CalcAbwehr',['Angriff','Panzer', 'Power'],[Treffer.Strength,Panzer,Treffer.Power])
    {$ELSE}
    Abwehr:=Treffer.Strength*(Panzer/Treffer.Power)
    {$ENDIF}
  else
    Abwehr:=Treffer.Strength;*)

  Schaden:=max(0,round(Treffer.Strength*SchadensWerte[Treffer.Zone]));

  // Schaden in der Trefferzone berechnen

  Treffer.SchadenAbs:=min(Gesundheit,Schaden);

  ChangeGesundheit(-Schaden);
  result:=fGesundheit<=0;
end;



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.012 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003