Krytyczny stan zdrowia 6539 22

O temacie

Autor Sauron

Zaczęty 1.04.2012 roku

Wyświetleń 6539

Odpowiedzi 22

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy
Chodzi mi oto, że jak bohater ma ok.10% punktów trafień to pojawia się efekt jak przy rozmowie z poszukiwaczem (dementor) tylko, że bez dzwięku.
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Krytyczny stan zdrowia
#1 2012-04-01, 16:07(Ostatnia zmiana: 2012-04-01, 16:08)
W którejś z funkcji odpalanych przy trafieniu (w g2nk zdaje się b_assessdamage.d) dodaj warunek że jeśli trafionym jest hero i jeśli ma <= maxhp/10 to wtedy wld_playeffect(...
Gotowego skryptu ofc ci nie napiszę i odradzam to innym.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Możesz też zrobić to funkcją sprawdzającą czy NPC ma mniej niż dziesięć życia i wywołującą żądany efekt. Sprawdzać możesz np. z ticktock'a co sekundę. Co sekundę bo częściej raczej nie potrzebne.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy

Sauron

Krytyczny stan zdrowia
#3 2012-04-01, 16:18(Ostatnia zmiana: 2012-04-01, 16:20)
tak?, efekt się nie wywołuję :
func void B_AssessDamage ()
{
var C_NPC Quarho; Quarho = Hlp_GetNpc (NONE_ADDON_111_Quarhodron);
var C_NPC Rhadem; Rhadem = Hlp_GetNpc (NONE_ADDON_112_Rhademes);
if ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Quarho)))
|| ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Rhadem)))
{
B_GhostSpecialDamage (other, self);
return;
};
B_BeliarsWeaponSpecialDamage (other, self);

if (self.aivar[AIV_ArenaFight] == AF_AFTER)
{
self.aivar[AIV_ArenaFight] = AF_AFTER_PLUS_DAMAGE;
};
if self.aivar [AIV_EnemyOverride] == TRUE
{
var C_NPC RAV; RAV = Hlp_GetNpc(BDT_1090_Addon_Raven);
if (Hlp_GetInstanceID(self) == (Hlp_GetInstanceID(RAV)))
{
self.aivar [AIV_EnemyOverride] = FALSE;
};
};
if (Npc_IsInState(self,ZS_Attack))
{
if (Npc_IsPlayer (other))
&& (self.npctype == NPCTYPE_FRIEND)
{
return;
};
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
|| (Hlp_GetInstanceID(other) != Hlp_GetInstanceID(hero))
{
Npc_SetTarget (self, other);
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other);
};
};
return;
};
if (B_AssessEnemy())
{
return;
};
if (!Npc_IsPlayer(other))
&& (other.aivar[AIV_ATTACKREASON] == AR_NONE)
{
B_Attack (self, other, AR_NONE, 0);
return;
};
if (Npc_IsInFightMode (other, FMODE_MELEE))
|| (Npc_IsInFightMode (other, FMODE_FIST))
|| (Npc_IsInFightMode (other, FMODE_NONE))
{
if (Npc_GetAttitude (self, other) == ATT_FRIENDLY)
|| ( (self.npctype == NPCTYPE_FRIEND) && Npc_IsPlayer(other) )
{
if (!Npc_IsInState(self, ZS_ReactToDamage))
{
Npc_ClearAIQueue (self);
B_ClearPerceptions (self);
AI_StartState (self, ZS_ReactToDamage, 0, "");
return;
};
if (hero.attribute[ATR_HITPOINTS_MAX] <= hero.attribute[ATR_HITPOINTS_MAX]/10)
{
Wld_PlayEffect("DEMENTOR_FX",  hero, hero, 0, 0, 0, FALSE );
};
};
};
B_Attack (self, other, AR_ReactToDamage, 0);
return;
};
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
if (hero.attribute[ATR_HITPOINTS_MAX] <= hero.attribute[ATR_HITPOINTS_MAX]/10)ten warunek nie ma sensu ! Efekt jest chyba dobrze (nie wiem moduje G1) a co do warunku to porównujesz max zycie z max zyciem dzielonym przez 10 w jakim celu ??

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy

Sauron

Krytyczny stan zdrowia
#5 2012-04-01, 16:23(Ostatnia zmiana: 2012-04-01, 16:45)
eee.. z matematyki za dobry nie jestem, ale chciałem żeby było dziecięć procent
EDIT!!: Kurde, teraz zauważyłem ma być tak:
if (hero.attribute[ATR_HITPOINTS] <= hero.attribute[ATR_HITPOINTS_MAX]/10)
                        {
                                Wld_PlayEffect("DEMENTOR_FX",  hero, hero, 0, 0, 0, FALSE );
                        };
EDIT: Jakby ktoś nie wiedział to dalej nie działa  :lol2:
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
EDIT: Jakby ktoś nie wiedział to dalej nie działa  :lol2:
Spróbuj tick_tockiem jak radziłem wcześniej.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Krytyczny stan zdrowia
#7 2012-04-01, 17:08(Ostatnia zmiana: 2012-04-01, 17:09)
Spróbuj tick_tockiem jak radziłem wcześniej.

kiedy to pojebany pomysł xD i gorzej działa.
Dodaj tam do if`a PrintSrceena i zobacz czy będzie działać bo może zły efekt

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Być może wolniej działa, ale dzięki temu nie muszę się martwić o ściąganie takiego efektu, bo twoim sposobem musisz i tak zrobić tick_tocka który sprawdzi czy mamy wystarczającą ilość hp i go ściągnie.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy

Sauron

Krytyczny stan zdrowia
#9 2012-04-01, 17:19(Ostatnia zmiana: 2012-04-01, 17:36)
napis się nie wyświetla
A jakby dodać ten skrypt do PC_HERO???
EDIT: w PC_HERO też nie działa
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Być może wolniej działa, ale dzięki temu nie muszę się martwić o ściąganie takiego efektu, bo twoim sposobem musisz i tak zrobić tick_tocka który sprawdzi czy mamy wystarczającą ilość hp i go ściągnie.

Nie prawda wystarczy dorobić funkcje wywoływaną przy jedzeni/piciu która by zdejmowała.

Cytuj
napis się nie wyświetla

a weź wypieprz tego if`a na początek zaraz pod

func void B_AssessDamage ()
{

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Być może wolniej działa, ale dzięki temu nie muszę się martwić o ściąganie takiego efektu, bo twoim sposobem musisz i tak zrobić tick_tocka który sprawdzi czy mamy wystarczającą ilość hp i go ściągnie.

Nie prawda wystarczy dorobić funkcje wywoływaną przy jedzeni/piciu która by zdejmowała.
Masz zamiar sprawdzać to przy każdej sztuce pożywienia osobno? Bo nie ma BS_EAT ani nic takiego.
Zrobienie tego tick_tockiem będzie najłatwiejszym sposobem.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy
"wywaliłem" i dalej nic
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
A reparsujesz skrypty?
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Krytyczny stan zdrowia
#14 2012-04-01, 19:03(Ostatnia zmiana: 2012-04-01, 19:04)
Masz zamiar sprawdzać to przy każdej sztuce pożywienia osobno? Bo nie ma BS_EAT ani nic takiego.
Zrobienie tego tick_tockiem będzie najłatwiejszym sposobem.
Skończ z tick tockiem bo to ... hmmm dzieło szatana xD
Przecież te funkcje już są !!! kazdy posiłek ma
Npc_ChangeAttribute(self, ATR_HITPOINTS, HP_Bugmeat);notatnikiem dajesz zamień wszystkie Npc_ChangeAttribute na np. Npc_ChangeAttributeEx
i robisz funkcje Npc_ChangeAttributeEx

func void Npc_ChangeAttributeEx(var C_npc npc, var int atr,var int HP){

Npc_ChangeAttribute(self,atr,HP);
if (Npc_IsPlayer(npc)){

Wld_stopEffekt(hero,"DEMENTOR_FX");//nie wiem jak to się wywołuje nie chce sprawdzać ale coś podobnego pewnie
};
};

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy
dobra tym się martwice później w dialogu z poczukiwaczem też coś musi przerywać efekt nie??? To się tam potem zobaczy.
Narazie efekt się nie wyświetla.
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Ehh...

_Work\data\Scripts\Content\Story\B_AssignAmbientInfos\B_AssignDementorTalk.d

63 linijka przy rozmowie wywoływane są 2 efekty na pewno masz odpowiedni ?

A wyłączanie w tym samym pliku 19 linijka.

I pokarz gdzie to wywaliłeś bo za chwile się okaże ze źle mnie zrozumiałeś xD

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
func void Npc_ChangeAttributeEx(var C_npc npc, var int atr,var int HP){

Npc_ChangeAttribute(self,atr,HP);
if (Npc_IsPlayer(npc)){

Wld_stopEffekt(hero,"DEMENTOR_FX");//nie wiem jak to się wywołuje nie chce sprawdzać ale coś podobnego pewnie
};
};
A gdzie sprawdzasz czy npc ma 10% hp lub więcej? Mając 1hp i jedząc jabłko i tak nam ściągnie efekt, nie wiem czy to jest porządany efekt, bo ja myślałem że on chce zrobić coś jak było w wiedźminie.

func void Npc_ChangeAttributeEx(var C_npc npc, var int atr,var int HP){

Npc_ChangeAttribute(self,atr,HP);
if (Npc_IsPlayer(npc) && NPC.attribute[ATR_HITPOINTS] => npc.attribute[ATR_HITPOINTS_MAX]
){

Wld_stopEffekt(hero,"DEMENTOR_FX");//nie wiem jak to się wywołuje nie chce sprawdzać ale coś podobnego pewnie
};
};
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Krytyczny stan zdrowia
#18 2012-04-02, 11:48(Ostatnia zmiana: 2012-04-02, 11:49)
A gdzie sprawdzasz czy npc ma 10% hp lub więcej? Mając 1hp i jedząc jabłko i tak nam ściągnie efekt, nie wiem czy to jest porządany efekt, bo ja myślałem że on chce zrobić coś jak było w wiedźminie.

To niech pomyśli i SAM sobie dopisze. ... Potem mniej dupę będzie truł jak załapie :P

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy

Sauron

Krytyczny stan zdrowia
#19 2012-04-02, 12:57(Ostatnia zmiana: 2012-04-02, 15:35)
To niech pomyśli i SAM sobie dopisze. ... Potem mniej dupę będzie truł jak załapie :P
Piszesz tak jakbym tego miał nie "słyszeć" - widzieć

A tu masz gdzie to wywaliłem:
func void B_AssessDamage ()
{

if (hero.attribute[ATR_HITPOINTS] <= hero.attribute[ATR_HITPOINTS_MAX]/10)
    {
Wld_PlayEffect("DEMENTOR_FX",  hero, hero, 0, 0, 0, FALSE );
    };

var C_NPC Quarho; Quarho = Hlp_GetNpc (NONE_ADDON_111_Quarhodron);
var C_NPC Rhadem; Rhadem = Hlp_GetNpc (NONE_ADDON_112_Rhademes);
if ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Quarho)))
|| ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Rhadem)))
{
B_GhostSpecialDamage (other, self);
return;
};
B_BeliarsWeaponSpecialDamage (other, self);
IceWeapon (other, self);
    IceW();
if (self.aivar[AIV_ArenaFight] == AF_AFTER)
{
self.aivar[AIV_ArenaFight] = AF_AFTER_PLUS_DAMAGE;
};
if self.aivar [AIV_EnemyOverride] == TRUE
{
var C_NPC RAV; RAV = Hlp_GetNpc(BDT_1090_Addon_Raven);
if (Hlp_GetInstanceID(self) == (Hlp_GetInstanceID(RAV)))
{
self.aivar [AIV_EnemyOverride] = FALSE;
};
};
if (Npc_IsInState(self,ZS_Attack))
{
if (Npc_IsPlayer (other))
&& (self.npctype == NPCTYPE_FRIEND)
{
return;
};
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
|| (Hlp_GetInstanceID(other) != Hlp_GetInstanceID(hero))
{
Npc_SetTarget (self, other);
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other);
};
};
return;
};
if (B_AssessEnemy())
{
return;
};
if (!Npc_IsPlayer(other))
&& (other.aivar[AIV_ATTACKREASON] == AR_NONE)
{
B_Attack (self, other, AR_NONE, 0);
return;
};
if (Npc_IsInFightMode (other, FMODE_MELEE))
|| (Npc_IsInFightMode (other, FMODE_FIST))
|| (Npc_IsInFightMode (other, FMODE_NONE))
{
if (Npc_GetAttitude (self, other) == ATT_FRIENDLY)
|| ( (self.npctype == NPCTYPE_FRIEND) && Npc_IsPlayer(other) )
{
if (!Npc_IsInState(self, ZS_ReactToDamage))
{
Npc_ClearAIQueue (self);
B_ClearPerceptions (self);
AI_StartState (self, ZS_ReactToDamage, 0, "");
return;
};

};
};
B_Attack (self, other, AR_ReactToDamage, 0);
return;
};
A może zrobić func void cristicaldamage w assessdamage, a potem wciepnąć CristicalDamage(); do startup#msg1029538a
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry