Danke fürs Feedback Crafty. Also Filter sind eine ziemlich lustige Sache, mit ihnen kann man viele "scheinbare" Dinge erledigen.
Wenn du dir die Specialpower anschaust:
SpecialPower SpecialAbilityGrausamWit
chking
Enum = SPECIAL_ARROW_STORM
ReloadTime = 240000
RadiusCursorRadius = 70
Flags = NEEDS_OBJECT_FILTER
InitiateAtLocationSound = EasMachtBlastWeapon (gewünschter Sound eincoden)
ObjectFilter = ANY +INFANTRY +CAVALRY +MONSTER -SHIP -HERO -MACHINE -DOZER -STRUCTURE -AngmarNumElite -AngmarHauptmann -AngmarHauptmannGulzar -AngmarHauptmannKarsh -AngmarHauptmannZaphragor -AngmarNumEliteBanner -AngmarNumEliteBannerKarsh -AngmarNumEliteBannerGulzar -AngmarNumEliteBannerZaphragor ALLIES
End
ANY gibt immer einen bestimmten Bereichsabschnitt an Einheiten-TAGs an. Wenn du ANY im Filter nutzt würde ich immer empfehlen die anderen "großen" TAGs abzuziehen oder hinzurechnen. Je nach ENUM kann sich das anders auswirken, sofern man dies nicht tut. Wenn du ein "-" vor einen TAG schreibst, wird dieser im Filter nicht miteinberechnet. Wenn ein "+" schreibst, wird dieser einberechnet. In meiner Fähigkeit möchte ich die Fähigkeit nur auf einer bestimmten Gruppierung auslösen können. Sobald eine Machine oder Helden etc an dem ausgewählten Platz stehen, wird der Cursor rot und kann nicht aktiviert werden. In meinem Fall sind es noch spezielle Günstlingobjecte (numeliteBanner etc), die ich nicht miteinberechnen wollte. Gibst du den Filter "ALL" an, ist jedes Object, sowohl Gebäude, Held, als auch Einheit, Machine etc betroffen. Hierbei kann du einfach zb schreiben: ALL -HERO -STRUCTURE -MACHINE -SHIP ALLIES
Im Endeffeckt würde der Filter dann gleich funktionieren, aber auf anderem Wege.
Schauen wir uns die weapon an:
Weapon GrausamerAnsturmWeapon
RadiusDamageAffects = ALLIES
;FireFX = FX_GrausamerAnsturmSound
AttributeModifierNugget
AttributeModifier = AngmarWitchkingCursedAtt
ack
Radius = 70.0
DamageFXType = ELECTRIC
SpecialObjectFilter = ANY +INFANTRY +CAVALRY +MONSTER -SHIP -HERO -MACHINE -DOZER -STRUCTURE -AngmarNumElite -AngmarHauptmann -AngmarHauptmannGulzar -AngmarHauptmannKarsh -AngmarHauptmannZaphragor -AngmarNumEliteBanner -AngmarNumEliteBannerKarsh -AngmarNumEliteBannerGulzar -AngmarNumEliteBannerZaphragor ALLIES
End
WeaponOCLNugget
WeaponOCLName = OCL_GrausamerAnsturmWeap
on
End
End
Hierbei gilt wieder genau das gleiche Prinzip: Ich möchte, dass nur ein bestimmter Einheiten-Typ betroffen wird. Ganz wichtig hierbei ist auch immer, dass du ALLIES im Filter angibst, oder eben im RadiusDamageAffects-Behaviour.
In diesem Weapon-Abschnitt habe ich NONE benutzt, um mir ein wenig Arbeit zu ersparen:
Weapon GrausamerAnsturmAlliesDe
stroyer1
IdleAfterFiringDelay = 0
AttackRange = 200
MinimumAttackRange = 0.8
WeaponSpeed = 1002
MinWeaponSpeed = 1003
MaxWeaponSpeed = 1001
ScaleWeaponSpeed = No
RadiusDamageAffects = ALLIES
DelayBetweenShots = 1000
PreAttackDelay = 0
PreAttackType = PER_ATTACK
FiringDuration = 1
DamageNugget
Damage = 99999999999999
Radius = 70.0
DamageType = MAGIC
DamageFXType = SWORD_SLASH
DeathType = NORMAL
DamageSpeed = 700.0
SpecialObjectFilter = NONE +AngmarDarkRanger ALLIES
End
End
Da jeder Ping nur für eine Einheit gelten soll, habe ich ihn per NONE +Einheit definiert.
Noch irgendwas unklar?
Frag ruhig.