Désolé, j'avais complètement oublié de te répondre.
En fait, j'avais oublié d'aller chercher dans les archives de mon mod comment j'avais effectué la manip pour un cas similaire.
En faisant le ménage sur mon DD, j'ai retrouvé les scripts.
Dans mon cas, le principe était le suivant (mais tu peux l'adapter au tien) :
Si <CHARNAME> est équipé d'un anneau et d'une amulette particuliers (chacun des deux lui accordant un pouvoir par jour), une cinématique se produit faisant "se fondre" les deux objets en un insigne.
Cet insigne cumule les propriétés d'équipement de l'anneau et de l'amulette. De plus, <CHARNAME> reçoit une capacité "divine" qu'il peut lancer une fois par jour. Cette capacité est traitée comme une capacité de haut niveau et n'est donc pas liée à l'insigne.
Par ailleurs, si <CHARNAME> est équipé d'une certaine armure, d'un certain casque et de certains gantelets, une autre cinématique lui retire ces objets et les remplace par une toute nouvelle armure.
Dans tous les cas, tout est géré par des scripts. Le but du jeu est de créer l'anneau, l'amulette, l'armure, le casque, les gants, l'insigne et une autre armure et d'effectuer un test :
Code : Tout sélectionner
IF
Class(Player1,PALADIN_ALL) // Tests sur la classe : réservé aux paladins
!FallenPaladin(Player1)
Gender(Player1,FEMALE) // Tests sur le sexe : réservé aux femmes
!Global("GWSolNon","GLOBAL",1) // Tests sur la campagne : on a accepté la mission.
Global("GWFemPla","GLOBAL",0)
!See([ENEMY])
CombatCounter(0)
HasItemEquipedReal("GWPlate",Player1) // Test sur l'équipement de l'armure
THEN
RESPONSE #100
SetGlobal("GWFemPla","GLOBAL",1)
Wait(30) //15
StartCutSceneMode()
CutSceneId(Player1)
ClearAllActions()
SetInterrupt(FALSE)
Wait(2)
CreateVisualEffectObject("GWArmor1",Player1)
Wait(6)
DisplayStringWait(Player1,@4211) // À nouveau, vous sentez ces frissons si familiers parcourir votre corps… Vous avez la nette impression de disposer de nouveaux pouvoirs. Il s'agit maintenant de s'en montrer digne car rares sont celles qui ont eu l'honneur de bénéficier des largesses de Gwendolyne.
ActionOverride(Player1,AddSpecialAbility("SPCL001")) // Apposition des mains
ActionOverride(Player1,AddSpecialAbility("SPCL002")) // Cantique
Wait(6) // SmallWait(6)
SetInterrupt(TRUE)
EndCutSceneMode()
END
Code : Tout sélectionner
IF
Global("GWFemPla","GLOBAL",1) // Armure découverte
Global("GWFemHel","GLOBAL",1) // Casque découvert
Global("GWFemGan","GLOBAL",1) // Gants découverts
Global("GWFemEqu","GLOBAL",0)
HasItemEquipedReal("GWPlate",Player1)
HasItemEquipedReal("GWHelm",Player1)
HasItemEquipedReal("GWGants",Player1)
THEN
RESPONSE #100
SetGlobal("GWFemEqu","GLOBAL",1)
Wait(30)
StartCutSceneMode()
CutSceneId(Player1)
ClearAllActions()
SetInterrupt(FALSE)
Wait(3)
CreateVisualEffectObject("SPHOLY",Player1)
Wait(8)
PlaySound("ACT_06")
TakePartyItem("GWPLATE")
DestroyItem("GWPLATE")
TakePartyItem("GWGANTS")
DestroyItem("GWGANTS")
TakePartyItem("GWHELM")
DestroyItem("GWHELM")
GiveItemCreate("GWPlate1",Player1,1,1,1)
DisplayStringWait(Player1,@4213)
SmallWait(12)
Wait(5)
ForceSpell(Player1,GAIN_ONE_STR_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11335) // La Force a été augmentée de 1 point de façon permanente
Wait(2)
ForceSpell(Player1,GAIN_ONE_CON_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11334)
Wait(2)
ForceSpell(Player1,GAIN_ONE_WIS_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11338)
Wait(2)
ForceSpell(Player1,GAIN_ONE_CHA_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11339)
Wait(2)
ForceSpell(Player1,GAIN_ONE_DEX_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11336)
Wait(2)
ForceSpell(Player1,GAIN_ONE_INT_PERMANENT)
Wait(2)
DisplayStringWait(Player1,11337)
Wait(2)
SetInterrupt(TRUE)
EndCutSceneMode()
END
Tout ceci n'est qu'une indication, mais le principe reste le même : dans un script, tu vérifies que tel perso est équipé des éléments concernés et tu lui appliques certaines modifs, lui retire son équipement et le remplace par un nouveau.
Tu fais la même chose si ton perso perd ou retire son équipement.
Je l'avais testé dans Baldur.bcs et Baldur25.bcs : ça fonctionne très bien. Me restait juste à le transférer dans les fichiers Player.bcs adéquats pour éviter de surcharger le script original du jeu.