Description : Ce mod vous permet d'absorber l'énergie magie de votre adversaire afin de recharger votre arme. Vous devrez utiliser un sort de barrière ou le bouclier Parasortis.
Formules:
* Limite de recharge = La charge de votre arme doit être inférieure à votre Magie +150
* Recharge à chaque coup: Nombre aléatoire compris entre (-15) et (20) + (Votre magie)/3. Le nombre aléatoire est décidé au moment du coup, c'est une sorte de jet de dé pour voir si vous aurez un bonus ou un malus.
Exemple: votre personnage possède 300 de magie et le nombre aléatoire est de -10
-------> pour le coup reçu, l'arme se rechargera de: (300/3) -4.55 = 100-10.00 = 90.00 points
-------> Limite de recharge 300 +150 = 450 points.
Testeur : ??
Autorisation : Oui
Captures d'écrans :
[youtube][/youtube]
Re: MagickAbsorption
Posté : 17 août 2012, 13:30
par Gerauld
Salut Sagi, j'ai voulu essayer ton mod mais n'ayant pas vu la source du script, j'hésite à l'installer. Tu connais ma prudence...surtout avec les surpirses que m'ont réservées certains mods récemment. Si tu me dis qu'il n'y a aucun registerforupdate() ou autre saleté du genre, ça me suffit.
J'imagine que tu as dû passer par un onwardhit() (je n'ai plus le nom exact de l'event en tête) posé par une quête donc normalement pas de soucis mais je préfère être sûr.
Re: MagickAbsorption
Posté : 17 août 2012, 13:33
par sagittarius22
Ne t'inquiète pas mon ami, j'ai retenu la leçon avec les RegisterForUpdate et je ne les utiliserai plus jamais
Voici la source si tu veux:
Scriptname _SAGAbsorbMagickaScriptPlayer extends ReferenceAlias
Import Utility
Import Debug
Event OnWardHit(ObjectReference akCaster, Spell akSpell, int aiStatus)
if aiStatus == 1
if (Self.GetRef() as Actor).GetEquippedWeapon(true) != NONE
if (Self.GetRef() as Actor).GetAv("LeftItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 150 && (Self.GetRef() as Actor).GetAv("LeftItemCharge") > 0
(Self.GetRef() as Actor).ModAv("LeftItemCharge", RandomFloat(-15,20)+(Self.GetRef() as Actor).GetAv("Magicka")/3)
endif
elseif (Self.GetRef() as Actor).GetEquippedWeapon(false) != NONE
if (Self.GetRef() as Actor).GetAv("RightItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 150 && (Self.GetRef() as Actor).GetAv("RightItemCharge") > 0
(Self.GetRef() as Actor).ModAv("RightItemCharge",RandomFloat(-15,20)+(Self.GetRef() as Actor).GetAv("Magicka")/3)
; Notification("Absorbe!")
endif
endif
endif
EndEvent
Je n'inclus pas mes sources dans mes mods, surtout parce que certaines traductions russes non autorisées de mes mods se retrouvent sur des sites de TORRENT (!!). Pas de source, pas de traduction de script
Re: MagickAbsorption
Posté : 17 août 2012, 13:49
par Gerauld
Ok. Je sélectionne l'esp et j'installe ce mod sans risque.
EDIT : Ça y est, il est adopté.
Re: MagickAbsorption
Posté : 19 août 2012, 22:06
par sagittarius22
Gerauld a écrit :Ok. Je sélectionne l'esp et j'installe ce mod sans risque.
EDIT : Ça y est, il est adopté.
Verdict?
Re: MagickAbsorption
Posté : 20 août 2012, 21:12
par Gerauld
Ça marche et ce qui est bien, c'est qu'on ne sombre pas dans le "grosbillisisme". Par contre, j'aurai bien vu l'intervention d'un talent (guérison (qui correspond à celui du sort) ou altération (qui collerait plus à mon avis).
La fourchette de recharge serait plus grande du coup passant de pas grand chose à un peu plus qu'actuellement pour un maître en altération ou en guérison.
Ce n'est qu'une idée.
Ce mod fait maintenant partie de ma modothèque.
A recommander à tous les guerriers/mages ou les mages utilisant souvent des bâtons.
Re: MagickAbsorption
Posté : 20 août 2012, 22:11
par sagittarius22
Bonne idée, je vais rajouter la Guérison et l'Altération à la formule
Scriptname _SAGAbsorbMagickaScriptPlayer extends ReferenceAlias
Import Utility
Import Debug
Bool IsWardHit
Float ExtraBonus = 0.00
Event OnWardHit(ObjectReference akCaster, Spell akSpell, int aiStatus)
if (Self.GetRef() as Actor).GetBaseAv("Magicka")+(Self.GetRef() as Actor).GetBaseAv("Alteration")+(Self.GetRef() as Actor).GetBaseAv("Restoration") >= 480.00
ExtraBonus = (Self.GetRef() as Actor).GetBaseAv("Magicka")/1.55
endif
IsWardHit = TRUE
if aiStatus == 1
if (Self.GetRef() as Actor).GetEquippedWeapon(true) != NONE
if (Self.GetRef() as Actor).GetAv("LeftItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 150 && (Self.GetRef() as Actor).GetAv("LeftItemCharge") > 0
(Self.GetRef() as Actor).ModAv("LeftItemCharge", ExtraBonus+RandomFloat(-15,20)+(Self.GetRef() as Actor).GetAv("Magicka")/3)
endif
elseif (Self.GetRef() as Actor).GetEquippedWeapon(false) != NONE
if (Self.GetRef() as Actor).GetAv("RightItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 150 && (Self.GetRef() as Actor).GetAv("RightItemCharge") > 0
(Self.GetRef() as Actor).ModAv("RightItemCharge",ExtraBonus+RandomFloat(-15,20)+(Self.GetRef() as Actor).GetAv("Magicka")/3)
; Notification("Absorbe!")
endif
endif
endif
Wait(2)
IsWardHit = FALSE
EndEvent
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
Wait(1)
if IsWardHit == FALSE
if (Self.GetRef() as Actor).GetBaseAv("Magicka")+(Self.GetRef() as Actor).GetBaseAv("Alteration")+(Self.GetRef() as Actor).GetBaseAv("Restoration") >= 480.00
ExtraBonus = (Self.GetRef() as Actor).GetBaseAv("Magicka")/2.55
endif
if akSource as Spell
if (Self.GetRef() as Actor).GetEquippedWeapon(true) != NONE
if (Self.GetRef() as Actor).GetAv("LeftItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 300 && (Self.GetRef() as Actor).GetAv("LeftItemCharge") > 0
(Self.GetRef() as Actor).ModAv("LeftItemCharge", ExtraBonus+RandomFloat(-10,20)+(Self.GetRef() as Actor).GetAv("Magicka")/4)
endif
elseif (Self.GetRef() as Actor).GetEquippedWeapon(false) != NONE
if (Self.GetRef() as Actor).GetAv("RightItemCharge") < (Self.GetRef() as Actor).GetAv("Magicka") + 300 && (Self.GetRef() as Actor).GetAv("RightItemCharge") > 0
(Self.GetRef() as Actor).ModAv("RightItemCharge",ExtraBonus+RandomFloat(-10,20)+(Self.GetRef() as Actor).GetAv("Magicka")/4)
; Notification("Absorbe!")
endif
endif
endif
endif
EndEvent
Re: MagickAbsorption
Posté : 20 août 2012, 23:05
par Gerauld
Si je comprends bien, maintenant l'objet équipé absorbe aussi l'énergie provenant des sorts lancés sur le joueur.
Normalement, il ne devrait pas y avoir trop de soucis mais j'aurai quand même vérifié si akAggressor n'était pas le joueur dans l'event onhit(). Il me semble qu'il peut y avoir déclenchement si le joueur se lance certains sorts. A vérifier.
Je viens de remplacer l'ancien script par celui-ci et de le compiler. Je testerai ça demain.
Re: MagickAbsorption
Posté : 21 août 2012, 09:23
par Tenzaku
Euh sinon pourquoi pas le talent enchantement ? (oui, je sais, je suis stupide )
Sinon je doute que le Ak.agressor soit un problème, le joueur n'ayant que deux mains il ne peut pas tenir le bouclier/sort, une arme à recharger et se lancer un sort...
Sauf si tu pars du principe que le bouclier lui-même pourrait être absorbé...