Accueil | Créer un blog | Blog Beauté | Blog Séries 247

Donjon News

Les maps Warcraft III de Bantas, alias Berak

Da Arcaniste | 25 novembre 2007

Le soutien par excellence =) J'espère qu'il ne sera pas trop essentiel pour un RPG.

Compétences

Galinamorphose : Transforme l'ennemi en poulet ! l'effet est annulé si la cible subit trop de dégâts.
Explosion des arcanes : Créé une explosion magique qui inflige des dégâts aux ennemis dans la zone et dissipe tous les effets qui y sont présents.
Marcheur arcanique : Invoque un marcheur arcanique capable de transférer la mana d'une unité à une autre (le script me fait encore mal à la tête au moment où j'écris ces lignes..)
Bouclier de mana [Supérieur] : Confère au marcheur arcanique la possibilité de déployer un bouclier de mana sur la cible alliée du Lien arcanique. Les dégâts subis par celle-ci seront alors encaissés par la mana du marcheur.
Aura d'illumination [Ultime] : La même que dans le jeu de base, mais à 250% =p

Publié par Bantas à 14:30:20 dans Héros | Commentaires (0) |

Fonctions pour Dummy casting | 23 novembre 2007

Voici un petit paquet de fonctions pour utiliser facilement la technique des dummycasters :

globals
constant integer DummyCaster = 'h000'
constant integer TimedLifeBuff = 'B003'
endglobals

function CastSpellTarget takes integer spell, integer level, string order, widget target, player caster returns nothing
local unit u = CreateUnit(caster,DummyCaster,GetWidgetX(target),GetWidgetY(target),0)
call UnitAddAbility(u,spell)
call SetUnitAbilityLevel(u,spell,level)
call UnitApplyTimedLife(u,TimedLifeBuff,3)
call IssueTargetOrder(u,order,target)
endfunction

function CastSpellTargetFrom takes integer spell, integer level, string order, widget target, player caster, real fromx, real fromy returns nothing
local unit u = CreateUnit(caster,DummyCaster,fromx,fromy,0)
call UnitAddAbility(u,spell)
call SetUnitAbilityLevel(u,spell,level)
call UnitApplyTimedLife(u,TimedLifeBuff,3)
call IssueTargetOrder(u,order,target)
endfunction

function CastSpellPoint takes integer spell, integer level, string order, real targetx, real targety, player caster returns nothing
local unit u = CreateUnit(caster,DummyCaster,targetx,targety,0)
call UnitAddAbility(u,spell)
call SetUnitAbilityLevel(u,spell,level)
call UnitApplyTimedLife(u,TimedLifeBuff,3)
call IssuePointOrder(u,order,targetx,targety)
endfunction

function CastSpellPointFrom takes integer spell, integer level, string order, real targetx, real targety, player caster, real fromx, real fromy returns nothing
local unit u = CreateUnit(caster,DummyCaster,fromx,fromy,0)
call UnitAddAbility(u,spell)
call SetUnitAbilityLevel(u,spell,level)
call UnitApplyTimedLife(u,TimedLifeBuff,3)
call IssuePointOrder(u,order,targetx,targety)
endfunction

function CastImmediateSpell takes integer spell, integer level, string order, real targetx, real targety, player caster returns nothing
local unit u = CreateUnit(caster,DummyCaster,targetx,targety,0)
call UnitAddAbility(u,spell)
call SetUnitAbilityLevel(u,spell,level)
call UnitApplyTimedLife(u,TimedLifeBuff,3)
call IssueImmediateOrder(u,order)
endfunction

Vous avez là de faire les 3 types de ciblages, et même en le faisant depuis un certain point ! (les fonctions qui finissent par from)
Evidemment il est fortement conseillé de changer les globales ^^

EDIT : Avant qu'on me pose la question, ces fonctions font tout ce qu'il faut (sauf le café)
En fait vous avez juste à appeler la fonction, et là vous aurez l'impression de voir un sort se lancer là où vous le désirez (sauf que ça fait une ligne au lieu de 4)

Publié par Bantas à 10:43:56 dans Warcraft III | Commentaires (0) |

Fonction pour mettre des éclairs entre 2 unités | 05 novembre 2007

Voici une jolie fonction pour relier 2 unités par des éclairs (ça rend assez bien IG ;-) ). Pour vous en servir, vous aurez besoin d'un éditeur compatible vJass (vous avez l'habitude non ?), d'une variable MoveInterval (un réel d'une valeur de 0.03), qui sera le temps entre chaque repositionnement de l'éclair, et des fonctions qui suivent (dans l'ordre) :

function H2I takes handle h returns integer
return h
return 0
endfunction

function H2S takes handle h returns string
return I2S(H2I(h))
return null
endfunction

function GetUnitZ takes unit u returns real
local location l = GetUnitLoc(u)
local real r = GetUnitFlyHeight(u) + GetLocationZ(l)
call RemoveLocation(l)
set l = null
return r
endfunction

Normalement vous avez déjà les 2 premières si vous avez pris d'autres fonctions ;-)
Voici donc la fonction en question :

struct s_AddLightningUnit
lightning l
timer t
unit u1
real z1
unit u2
real z2
real time
real done
endstruct

function AddLightningUnit_cycle takes nothing returns nothing
local timer t = GetExpiredTimer()
local s_AddLightningUnit s = GetStoredInteger(udg_GC,H2S(t),key)

if (s.done >= s.time) or (GetUnitState(s.u1,UNIT_STATE_LIFE) <= 0) or (GetUnitState(s.u2,UNIT_STATE_LIFE) <= 0) then
call DestroyLightning(s.l)
call PauseTimer(t)
call DestroyTimer(t)
call FlushStoredMission(udg_GC,H2S(t))
else

call MoveLightningEx(s.l,true,GetUnitX(s.u1),GetUnitY(s.u1),GetUnitZ(s.u1)+s.z1,GetUnitX(s.u2),GetUnitY(s.u2),GetUnitZ(s.u2)+s.z2)
set s.done = s.done + MoveInterval
endif

set t = null
endfunction

function AddLightningUnit takes string l, real time, unit u1, real z1, unit u2, real z2 returns s_AddLightningUnit // l= Type d'éclair | z= Décalage Z
local s_AddLightningUnit s = s_AddLightningUnit.create()
local timer t = CreateTimer()

set s.t = t
set s.u1 = u1
set s.z1 = z1
set s.u2 = u2
set s.z2 = z2
set s.time = time
set s.done = 0
set s.l = AddLightningEx(l,true,GetUnitX(u1),GetUnitY(u1),GetUnitZ(u1)+z1,GetUnitX(u2),GetUnitY(u2),GetUnitZ(u2)+z2)

call StoreInteger(udg_GC,H2S(t),key,s)
call TimerStart(t,MoveInterval,true,function AddLightningUnit_cycle)

set t = null

return s
endfunction

Comme d'habitude, les lignes importantes :

Ligne à appeler :
function AddLightningUnit takes string l, real time, unit u1, real z1, unit u2, real z2 returns s_AddLightningUnit // l= Type d'éclair | z= Décalage Z

Exemple d'appel :
call AddLightningUnit(lightning,time,caster,zOffset,target,zOffset)

 

EDIT : Les éclairs ne continueront plus sur les morts, ça faisait buguer le jeu parfois.

Publié par Bantas à 23:11:48 dans Divers | Commentaires (0) |

Foudrelame | 05 novembre 2007

Sisi, il est fini. D'ailleurs j'ai galéré pour faire son ultime (non ce n'est pas ça qui m'a pris plusieurs mois Moqueur). Je compte m'attaquer à l'Arcaniste juste après.

Compétences

Fouet électrique : Envoie un éclair sur la cible. Celle-ci prend des dégâts et est attirée vers le lanceur.
Pluie d'éclairs : Présent dans le jeu original.
Parade foudroyante : Donne une chance qu'un éclair frappe un ennemi qui attaque le Foudrelame.
Tonnerre grondant (Supérieur) : Provoque une explosion électrique qui paralyse et fait des dégâts aux ennemis.
Maëlstrom (Ultime) : Le Foudrelame canalise son énergie pour se relier par des éclairs à ses ennemis. Il les fait ensuite tournoyer à grande vitesse, leur faisant perdre leurs enchantements et des points de vie. (une description aussi floue que celle du Châtiment astral, mais le sort est quasi-mieux -je parle par rapport au Châtiment astral une fois transformé sur Arena-100-)

Caractéristiques

Y en a pas ! Du moins elles ne sont pas fixées, puisque j'ai perdu mes tableaux qui permettaient d'avoir une vue d'ensemble de la chose.

Publié par Bantas à 22:56:48 dans Héros | Commentaires (0) |

1|

Tous les derniers titres