Item-Kombination #8441
Kombinationsgröße: 2
Kombinationsgegenstände
Frontier_R_Crown_IQ
Frontier_IQ_Claw
Kombinationseffekt
.@r_weapon = getequiprefinerycnt(EQI_HAND_R);
.@sum = getequiprefinerycnt(EQI_HEAD_TOP)+.@r_weapon;
if (.@sum>=24 && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A) {
autobonus3 "{ .@r_weapon = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillCooldown,\"IQ_BLAZING_FLAME_BLAST\",-300; bonus2 bSkillCooldown,\"IQ_EXPOSION_BLASTER\",-200; bonus bLongAtkRate,5*.@r_weapon; bonus bCRate,.@r_weapon; bonus bCritical,2*.@r_weapon; }",1000,15000,"IQ_MASSIVE_F_BLASTER";
}
bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",25;
bonus bCritAtkRate,15;
Skriptreferenzen
getequiprefinerycnt
Befehl
getequiprefinerycnt
Signatur:
getequiprefinerycnt(<equipment slot>{,<char_id>})
Beschreibung:
slot. For a list of equipment slots see 'getequipid'.
Can be used to check if you have reached a maximum refine value, default for
this is +10:
Beispiel:
if (getequiprefinerycnt(EQI_HEAD_TOP) < 10)
mes "I will now upgrade your " + getequipname(EQI_HEAD_TOP);
else
mes "Sorry, it's not possible to refine hats better than +10";
close;
if
Befehl
if
Signatur:
if (<condition>) <statement>;
Beschreibung:
This is the basic conditional statement command, and just about the only one
available in this scripting language.
The condition can be any expression. All expressions resulting in a non-zero
value will be considered True, including negative values. All expressions
resulting in a zero are false.
If the expression results in True, the statement will be executed. If it isn't
true, nothing happens and we move on to the next line of the script.
For more information on conditional operators see the operators section above.
bothering to store it in a specific variable:
More examples of using the 'if' command in the real world:
Example 1:
Example 2:
Notice that examples 1 and 2 have the same effect.
Example 3:
Example 4:
Example 5:
See 'strcharinfo' for an explanation of what this function does.
Example 6: Using complex conditions.
The script engine also supports nested 'if' statements:
If the condition isn't met, it'll do the action following the 'else'.
We can also group several actions depending on a condition:
Remember that if you plan to do several actions upon the condition being false, and
you forget to use the curly braces (the { } ), the second action will be executed regardless
the output of the condition, unless of course, you stop the execution of the script if the
condition is true (that is, in the first grouping using a return; , and end; or a close; )
Also, you can have multiple conditions nested or chained.
Beispiel:
if (1) mes "This will always print.";
if (0) mes "And this will never print.";
if (5) mes "This will also always print.";
if (-1) mes "Funny as it is, this will also print just fine.";
if (strcharinfo(0) == "Daniel Jackson") mes "It is true, you are Daniel!";
.@answer = 1;
input .@input;
if (.@input == .@answer)
close;
mes "Sorry, your answer is incorrect.";
close;
.@answer = 1;
input .@input;
if (.@input != .@answer)
mes "Sorry, your answer is incorrect.";
close;
.@count++;
mes "[Forgetful Man]";
if (.@count == 1) mes "This is the first time you have talked to me.";
if (.@count == 2) mes "This is the second time you have talked to me.";
if (.@count == 3) mes "This is the third time you have talked to me.";
if (.@count == 4) {
mes "This is the fourth time you have talked to me.";
mes "I think I am getting amnesia, I have forgotten about you...";
.@count = 0;
}
close;
mes "[Quest Person]";
if (countitem(512) < 1) { // 512 is the item ID for Apple, found in db/item_db.yml
mes "Can you please bring me an apple?";
close;
}
mes "Oh, you brought an Apple!";
mes "I didn't want it, I just wanted to see one.";
close;
mes "[Person Checker]";
if ($@name$ == "") { // global variable not yet set
mes "Please tell me someones name";
next;
input $@name$;
$@name2$ = strcharinfo(0);
mes "[Person Checker]";
mes "Thank you.";
close;
}
if ($@name$ == strcharinfo(0)) { // player name matches $@name$
mes "You are the person that " + $@name2$ + " just mentioned.";
mes "Nice to meet you!";
// reset the global variables
$@name$ = "";
$@name2$ = "";
close;
}
mes "You are not the person that " + $name2$ + " mentioned.";
close;
mes "[Multiple Checks]";
if (@queststarted == 1 && countitem(512) >= 5) {
mes "Well done, you have started the quest and brought me 5 Apples.";
@queststarted = 0;
delitem 512,5;
close;
}
mes "Please bring me 5 apples.";
@queststarted = 1;
close;
if (<condition>)
dothis;
else
dothat;
if (<condition>) {
dothis1;
dothis2;
} else {
dothat1;
dothat2;
dothat3;
}
if (<condition 1>)
dothis;
else if (<condition 2>) {
dothat;
end;
} else
dothis;
getenchantgrade
Befehl
getenchantgrade
Signatur:
getenchantgrade({<equipment slot>,<char_id>})
Beschreibung:
function is called or the specified equipment slot. If nothing is
equipped there, it returns -1.
Valid equipment slots are:
EQI_COMPOUND_ON - Item slot that calls this script (In context of item script) (default)
For a list of others equipment slots see 'getequipid'.
autobonus3
Befehl
autobonus3
Signatur:
autobonus3 <bonus script>,<rate>,<duration>,<skill id>,{<other script>};
autobonus3 <bonus script>,<rate>,<duration>,"<skill name>",{<other script>};
Beschreibung:
These commands are meant to be used in item scripts only! See 'petautobonus' for pet usage.
What these commands do is 'attach' a script to the player which will get
executed on attack (or when attacked in the case of autobonus2).
Rate is the trigger rate of the script (1000 = 100%).
Duration is the time in milliseconds that the bonus will last for since the script has triggered.
Skill ID/skill name the skill which will be used as trigger to start the bonus. (autobonus3)
The optional argument 'flag' is used to classify the type of attack where the script
can trigger (it shares the same flags as the bAutoSpell bonus script):
Range criteria:
Attack type criteria:
Skill criteria:
The difference between the optional argument 'other script' and the 'bonus script' is that,
the former one triggers only when attacking(or attacked) and the latter one runs on
status calculation as well, which makes sure, within the duration, the "bonus" that get
lost on status calculation is restored. So, 'bonus script' is technically supposed to accept
"bonus" command only. And we usually use 'other script' to show visual effects.
In all cases, when the script triggers, the attached player will be the one
who holds the bonus. There is currently no way of knowing within this script
who was the other character (the attacker in autobonus2, or the target in
autobonus and autobonus3).
//Grants a 1% chance of starting the state "all stats +10" for 10 seconds when
//using weapon or misc attacks (both melee and ranged skills) and shows a special
//effect when the bonus is active.
Beispiel:
BF_SHORT: Trigger on melee attack
BF_LONG: Trigger on ranged attack
Default: BF_SHORT+BF_LONG
BF_WEAPON: Trigger on weapon skills
BF_MAGIC: Trigger on magic skills
BF_MISC: Trigger on misc skills
Default: BF_WEAPON
BF_NORMAL: Trigger on normal attacks
BF_SKILL: Trigger on skills
default: If the attack type is BF_WEAPON (only) BF_NORMAL is used,
otherwise BF_SKILL+BF_NORMAL is used.
autobonus "{ bonus bAllStats,10; }",10,10000,BF_WEAPON|BF_MISC,"{ specialeffect2 EF_FIRESPLASHHIT; }";
bSkillCooldown
Gegenstandsbonus
bSkillCooldown
Signatur:
bonus2 bSkillCooldown,sk,t;
Beschreibung:
Increases cooldown of skill sk by t milliseconds
bLongAtkRate
Gegenstandsbonus
bLongAtkRate
Signatur:
bonus bLongAtkRate,n;
Beschreibung:
Increases damage of long ranged attacks by n%
bCRate
Gegenstandsbonus
bCRate
Signatur:
bonus bCRate,n;
Beschreibung:
CRate + n
bCritical
Gegenstandsbonus
bCritical
Signatur:
bonus bCritical,n;
Beschreibung:
Critical + n
bSkillAtk
Gegenstandsbonus
bSkillAtk
Signatur:
bonus2 bSkillAtk,sk,n;
Beschreibung:
Increases damage of skill sk by n%
bCritAtkRate
Gegenstandsbonus
bCritAtkRate
Signatur:
bonus bCritAtkRate,n;
Beschreibung:
Increases critical damage by +n%