View Full Version : Unit abilities
Mr. Powell
29-09-2006, 11:41
Oh man es ist schon ganz schön viel Zeit den Tiber runtergeflossen als ich mich hier blicken ließ :wink: :biggrin: .
Aber mal zu meiner Frage (die wohl eher nur die Devs beantworten können ;) ). Ich hab fast alle wichtigen Spielinternen fies/scripts ausgemacht, nur suche ich wie verzweifeld nach der Def (= Definition) der abilities á la Trex Roar ... . Damit meine ich jetzt nicht die Dauer des erforschens dieser Upgrades für die Tiereinheiten, sondern deren "besondere Wirkungen" oder mit anderen Worten wo ist die Stunzeit definiert (welches script/file) bzw. wo steht drin welche aoe (= area of effect) diese Spezialfähigkeit hat. Ich wäre sehr dankbar für eine Antwort, da es schwer ist ein Spiel nur halbherzig zu modden wenn besondere Bereiche einem fehlen :wink: .
Nur so nebenbei das Spiel ist seine Entwicklungszeit/Aufwand MEHR als Wert und ist nicht umsonst ein Spiel wo ich viel Potenzial drin sehe ;).
Thanks in advance!
Die genauen Funktionen der einzelnen Specialmoves (task) sind nicht im Techtree. Für diese gibt es extra *.usl Skripts :cool:
Mr. Powell
29-09-2006, 22:21
... und wo genau muss ich da nach diesem gewissen "extra" gucken ... Bad Gun :)?
... lese Dir meinen Satz da oben nochmal mit einer Lupe durch ... vielleicht findest Du den versteckten Hinweis :wink:
Talarurus
29-09-2006, 22:42
Isses das hier? (task)
... um diese Zeit noch so aufmerksam? :go:
Talarurus
29-09-2006, 22:45
Hab ganz viel Caputschieno getrunken :rofl:
Mr. Powell
30-09-2006, 15:53
Phew LoL hihi :biggrin:
So weit so gut, aber trotz alle dem habe ich (selbst im Task Ordner) nichts bzw. keine festen Integer/Variablen für die Stunzeit 'stunroar' des Rex gefunden, andere Sachen habe ich hingegen eher in der Fightingobject.usl gefunden die da wären (getestet ingame):
.
.
.
if(GetEffectFlag(EFFECT_MAMMOTH_TRUMPET))then
fValue *= 0.8;
endif;
if(GetEffectFlag(EFFECT_TRICERATOPS_PAW))then
fValue *= 0.8;
endif;
if(GetEffectFlag(EFFECT_CHTR_WARCRY_5))then
fValue *= 1.2;
elseif(GetEffectFlag(EFFECT_CHTR_WARCRY_4))then
fValue *= 1.15;
elseif(GetEffectFlag(EFFECT_CHTR_WARCRY_3))then
fValue *= 1.1;
endif;
if(GetEffectFlag(EFFECT_AJE_WARPAINT_5))then
fValue *= 0.8;
elseif(GetEffectFlag(EFFECT_AJE_WARPAINT_4))then
fValue *= 0.85;
elseif(GetEffectFlag(EFFECT_AJE_WARPAINT_3))then
fValue *= 0.9;
endif;
if(GetEffectFlag(EFFECT_WILDBOAR_RAGE))then
fValue *= 1.15;
endif;
if(GetEffectFlag(EFFECT_MEGALO_DRUMS))then
fValue *= 1.2;
endif;
if(GetEffectFlag(EFFECT_NINIGI_CAULDRON))then
fValue *= 1.25;
endif;
fValue += GetBonusSum(BONUS_DAMAGE);
.
.
.
usw. (anbei dort ist fast alles bezüglich der Specials der Nordländer versteckt - Rhino Standarte ...)
Das hab ich schonmal gefunden nur fehlt mir wie schon gesagt die Variable zu der Stunzeit des Rex und allmählich glaube ich wird die durch gewisse Schleifen berechnet/kalkuliert den das einzige was ich im Bereich Task fand war die ANMLSpec.usl in der dieses über die "Hauptattacke" des Rex zu finden ist. Man sieht die Specials des Trics Titans zu bearbeiten ist um einiges einfacher :wink:
class CStunningRoar inherit CTask
.
.
.
proc void USLOnTick(int p_iTime)
var ^CAnimal pxHandle = cast<CAnimal>(m_xHandle.GetObj());
if(pxHandle==null)then EndTask(); return; endif;
Hier denke ich ist nur der Area od Effect (ohne Stunzeit - mag mich aber auch täuschen)
var real fRange = pxHandle^.GetCollisionRadius()+10.0; // must NOT be 0.0;
if(m_sState == "start_anim")then
//calc
pxHandle^.SetAnim(m_sAnim,1);
m_fAnimLength=pxHandle^.GetCurrentAnimLength();
pxHandle^.WaitAction(m_fTimeOffSet);
m_sState = "do_stun";
elseif(m_sState == "do_stun")then
var int iOwner = pxHandle^.GetOwner();
if(iOwner>=0)then
var CObjList xList;
var ^CObjList pxEnemies=CSrvWrap.GetObjMgr()^.GetOwnerEnemyList( iOwner);
if(pxEnemies==null) then EndTask(); return; endif;
pxEnemies^.CopySorted(xList, pxHandle^.GetPos(), fRange);
var int i, iC = xList.NumEntries();
for(i=0)cond(i<iC)iter(i++)do
var ^CFightingObj pxFight = cast<CFightingObj>(xList[i].GetObj());
if(pxFight!=null && !pxFight^.GetTransportObj().IsValid())then
pxFight^.SetTrapped(m_fTime);
pxFight^.SetAnim("standanim",3);
endif;
endfor;
endif;
if(m_fAnimLength>m_fTimeOffSet)then
pxHandle^.WaitAction(m_fAnimLength-m_fTimeOffSet);
endif;
m_sState = "finished";
elseif(m_sState == "finished")then
m_sState="EndTask";
pxHandle^.ReturnToFight();
elseif(m_sState == "EndTask")then
EndTask();
return;
.
.
.
und diese Kleinigkeit habe ich noch in der netten Datei Animal.usl gefunden die aber wie die Fightingobject.usl nicht im Task Ordner liegt:
class CAjeTrex inherit CAnimal
.
.
.
if(p_sCommand=="Action") then
if(p_sMiscParams.Find("/trex_scrunch") != -1)then
if(CheckSpecialActionTimer(p_sMiscParams))then
if(ShakeOff("trex_fm_2",0.2,2.0))then
AddSpecialActionTimer(p_sMiscParams);
endif;
endif;
elseif(p_sMiscParams.Find("/trex_roar") != -1)then
if(CheckSpecialActionTimer(p_sMiscParams))then
if(StunningRoar("menace",7.0,0.8))then
AddSpecialActionTimer(p_sMiscParams);
endif;
endif;
else
super.HandleGamePlayCommand(p_sCommand, p_pxObject, p_vPos, p_sMiscParams);
endif;
else
super.HandleGamePlayCommand(p_sCommand, p_pxObject, p_vPos, p_sMiscParams);
endif;
endproc;
endclass;
.
.
.
Nebenbei mir scheint so als ob die Fightingobject.usl eher für die Specials und ihre Eigenschaften gemacht wurde, als die ANMLSpec.usl (innerhalb des Task Ordners) wo du Bad Gun eigentlich meintest das ich nach der Rex Stunzeit suchen solle :wink: .
Aber wie schon gesagt habe ich das dumpfe Gefühl das es dafür keine feste Variable á la Trics Titan PAW, Icespearman special attack (hint*seticed*hint) ... gibt ...
Wäre aber trotzdem sehr denkbar wenn mir jemand hier nun helfen könnte da das Spiel dadurch nicht komplett modbar ist :wink: .
He Mr. Powell du hast doch damals in der mp-Demo nen spino auf kleeblatt geladen, wie hast du das gemacht, hast du die map.ula geändert?
Mr. Powell
01-10-2006, 20:09
Nee dazu musste ich weder die map noch sonst etwas ändern, mit Außnahme der damaligen Techtree Datei (sehr nützliche Datei! :wink: ) die man nur etwas "umschreiben" musste Cole.
Aber zurück zum Problem, gibts wirklich keinen der sich hiermit beschäftigt um mir bei diesen Prob ein bißchen auf die Sprünge zu helfen, den der Rex soll auch sein fleis ... ähh fett abbekommen :wink: .
*Vorsichtig Augen nach Devs Ausschau halten* :).
--
Kommt schon bei fast rund ~ 200 views gibts keine Antwort auf diese Frage (Devs)!?
... hoffe, dass meine Antwort-PN helfen konnte.
Was haste denn geschrieben? Wir wollen nämlich auch modden!:lol:
Also in der Animal.usl findest Du einige Specialmoves der Tiereinheiten.
Wenn man dort sucht, findet man teilweise auch die entsprechenden Werte (z.B. Roar 7 Sekunden) ... ist "natürlich" leider nicht gleich offensichtlich so zu erkennen ... (zB. ist das in der Zeile: "if(StunningRoar("menace",7.0,0.8))then" anhand der 7 beschrieben.
Für das Enchain ist das in der ANML.Spec.usl im task-ordner schon besser zu erkennen in der Zeile : const real m_fDuration=20.0f;
Aber laut Mr.Powell bringen Änderungen daran nichts. Naja ... mal schauen, worans liegt. :cool:
Wow man kann ja wenn mans weiss, alles ändern, ich denke da so an coole finisher moves! Kann man die eigentlich auch modden?:scratch:
Talarurus
03-10-2006, 11:33
Wenn du da nen Animation zu kriegst isses kein Problem. Ich wünsche viel Spaß :lol:
Stimmt das wäre wider so ein problem aber weisst du man kann ja vielleciht die häufigkeit einstelleN!:lol:
Mr. Powell
03-10-2006, 14:07
Insofern die Häufigkeit als Integer/Variablen Wert irgendwo innerhalb der *.usl Dateien niedergeschrieben ist wirst du wohl schon die Häufigkeit ändern können Cole :wink: .
Ah so!
Aber das ist dann vesteckt so wie die roar dateinen und so weiter!:lol:
vBulletin v3.5.4, Copyright ©2000-2007, Jelsoft Enterprises Ltd.