Bonjour,
Je suis actuellement en train d'adapter une arme mais je bloque depuis hier soir.
J'utilise une variante du script qui choisit le coup critique pour le pistolet à impulsion de Energy Visuals Enhanced, si vous connaissez. Le but est d'obtenir une arme qui ne fait aucun dégât si le coup est normal, mais tue l'ennemi sur le coup si le coup est critique.
L'effet du coup critique est le foudroiement (Judgement Fray) de EVE que l'on a parfois si l'ennemi est à l'extérieur.
Mais je n'ai jamais touché aux scripts et je n'ai que mon bon anglais et un peu de logique pour raisonner.
J'utilise ce script actuellement:
► Afficher le texte
Code : Tout sélectionner
ScriptName WJSArcofAtom
; selects Arc of Atom critical
short rnd
short NumberOfOptions
short isHumanoid
short notDismembered
short headShot
Begin ScriptEffectStart
if GetItemCount WJSDeathTokenList ; If a death sequence is already playing
Return
endif
set NumberOfOptions to 11 ; number of death options
if GetIsCreature == 0 || GetIsCreatureType 5 ; if is not a Creature or is a Feral Ghoul, isHumanoid = 1
set isHumanoid to 1
if IsLimbGone 1 ; Head
elseif IsLimbGone 3 ; Left arm
elseif IsLimbGone 5 ; Right arm
elseif IsLimbGone 7 ; Left leg
elseif IsLimbGone 10 ; Right leg
else ; If all the limbs listed above are not dismembered
set notDismembered to 1 ; Target is a whole humanoid
if GetHitLocation == 1 ; Head
set headShot to 1 ; Target shot in the head
endif
endif
endif
if GetDead ; Death Criticals
set rnd to 6
if rnd == 1 ; Holy Smoke
AddItem WJSholysmokeToken 1 1
elseif rnd == 2 ; Atom's Fury
AddItem WJSPulseDisintegrationToken 1 1
elseif rnd == 3 ; Dust to dust
if isHumanoid
AddItem WJSDustToken 1 1
endif
elseif rnd == 4 ; Dust to dust SM
if GetIsCreatureType 4
AddItem WJSDust2DustSMToken 1 1
endif
elseif rnd == 5 ; Judgement Fray
if GetRandomPercent < player.GetActorValue Luck * 10
if player.IsInInterior == 0
if GetIsCreatureType 6 == 0 ; no robots allowed!
AddItem WJSjudgementfrayToken 1 1
endif
endif
endif
elseif rnd == 6 ; Judgement Fray (anyone)
if GetRandomPercent < player.GetActorValue Luck * 10
if player.IsInInterior == 0
AddItem WJSjudgementfray02Token 1 1
endif
endif
elseif rnd == 7 ; pulse fission
AddItem WJSpulsefission 1 1
elseif rnd == 8 ; Static Evisceration
AddItem WJSStaticEviscerateToken 1 1
elseif rnd == 9 ; Use the force, Luke!
AddItem WJSSkyWalkerToken 1 1
elseif rnd == 10 ; Static Eviscerate Outdoors
if player.IsInInterior == 0
AddItem WJSStaticEviscerateOToken 1 1
endif
elseif rnd == 11 ; Yuma Flats Specialty
AddItem WJSYumaFlatsToken 1 1
endif
endif
End
J'y ai très peu touché, je me suis contenté de faire en sorte que le coup critique 6 soit sélectionné tout le temps. Mais voilà les problèmes que je rencontre:
-Je n'arrive pas à faire en sorte que le coup normal fasse 0 de dommages: si je sélectionne 0 en dommages, peu importe la valeur du coup critique, il ne se déclenche jamais.
-Le jeu vérifie actuellement GetDead, le problème c'est que si je l'enlève, le jeu plante au moment de tuer, si je le laisse, il faut que l'ennemi soit mort pour que l'effet se déclenche (du coup j'ai beau décocher OnDeath, ça change que dalle.)
-Mystérieusement, et sûrement aussi à cause du GetDead, parfois l'ennemi meurt sans foudroiement.
-Le plus important, je voudrais que le coup ne fasse aucun dégât et aucun effet si l'ennemi est à l'intérieur d'un bâtiment. Et ça c'est le même problème qu'au dessus.
Et aussi, mais je pense qu'il y a un mauvais réglage et je ne me suis pas penché dessus: l'arme tire des rafales terribles d'une cinquantaine de coups par seconde, même avec 1 en firerate. Cependant ça ne me dérange pas du tout si j'arrive à régler 0 pour le coup normal.
(Actuellement l'arme fait presque autant de dégâts qu'un minigun mal en point, alors qu'elle indique 1 de dégâts dans le pip-boy.)
Donc je pense qu'un bon début est déjà d'élaguer un peu le script pour enlever toutes les options dont je ne me sert pas. Si quelqu'un s'y connais un minimum pour le faire, j'apprécierais, merci.

Walkin' on, walkin' on da moon.