Page 1 sur 1

[SCRIPT] Comment cumuler les pouvoirs de deux objets ?

Posté : mar. 04 juin 2013, 19:33
par Cocrane
Je prends un exemple:

l'objet A a un pouvoir magique appelé A. Idem pour B.

Si l'objet A et B sont sur le même porteur alors le pouvoir de l'un des deux objets augmente de pouvoir.

Si l'un des deux objets est retiré de son emplacement, l'augmentation est perdue.

Pour moi, le test est a réaliser lorsque l'on touche à l'équipement.
Existe il des mots clés pour traiter ce besoin?

Cocrane

Posté : dim. 03 nov. 2013, 23:02
par Freddy_Gwendo
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.

Posté : mer. 06 nov. 2013, 21:59
par Cocrane
Merci Freddy,
ca correspond complètement à l'un de mes besoins.

Reste plus qu'à l'adapter. ^^

Cocrane

Posté : mer. 13 nov. 2013, 01:02
par Freddy_Gwendo
De rien. ;)

N'hésite pas si tu as d'autres questions.

L'avantage d'un projet pharaonique, c'est que l'on est obligé de toucher un peu à tout, parfois avec succès. Mais trop souvent, on s'aperçoit que certaines opérations sont quasi impossibles à réaliser. :gign:
Si ça peut te permettre de gagner du temps, c'est tout bénéf...

Ceci dit, depuis le temps et avec les modifications de l'exécutable par ToBEX, je reprends régulièrement certains éléments abandonnés pour essayer de les réaliser.