Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

318 connectés actuellement

29371371 visiteurs
depuis l'ouverture

1007815 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Le Temple de Valor

RPG Maker - La Communauté

Tashiroworld

New RPG Maker

Tous nos partenaires

Devenir
partenaire



Messages postés par ayop
Nombre de messages référencés sur Oniromancie (non supprimés): 721

Aller à la page: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Posté dans Forum - Screenshots de vos jeux !

ayop - posté le 18/03/2013 à 11:15:44. (847 messages postés)

Tes arbres ne sont pas tous très homogène, notamment l'arbre fruitier pour les couleurs et le palmier pour la perspective.
Mais sinon c'est très très chouette, bonne continuation.

Posté dans Forum - Blabla divers et autres diversités diverses et variées.

ayop - posté le 16/03/2013 à 21:56:37. (847 messages postés)

Xwdrffgt c'est un mec drôle.

Posté dans Forum - Les Joutes du Téméraire 2013

Ayop - posté le 16/03/2013 à 10:58:03. (847 messages postés)

Ce sera toujours pas possible pour moi. Dommage.

Posté dans Forum - Blabla divers et autres diversités diverses et variées.

Ayop - posté le 16/03/2013 à 09:58:12. (847 messages postés)

Moi j'approuve Monos avec son idée de brève à compiler par la suite pour en faire une grosse news. Bon après, j'aime bien aussi les news de je ne sais plus qui (désolé) et qui présentait des projets des communautés étrangères, c'était génial je trouve. Mais ça doit pas être évident à rédiger, j'avoue !
Moi ce qui m'embête le plus en vrai, c'est l'encart en en-tête du forum qui présente les projets actuels du forum. Il a juste pas bouger depuis 8 mois environ, alors que depuis, y a quand même eu de bons petits projets de présentés genre MegaMike, Innexistence, récemment la 7ème porte, ou tout simplement RitoJS ou arttroy qui news quand même bien régulièrement sur leur(s) projet(s) respectif(s). C'est un très bon élément informatif du forum qui, laisser à l'abandon, aurait plus tendance à faire fuir de nouveaux arrivants sur le site en leur montrant quelque chose de "mort" plutôt qu'en leur donnant une accroche. Il en va de même pour les news.

Après ce n'est que mon avis bien entendu. Mais à partir du moment où l'on est plusieurs à mettre en avant quelque chose, mieux vaut prendre les remarques énoncés en considération plutôt que de rester sur la défensive pour au final bloquer la discussion.

Posté dans Forum - Topic du Cinéma

Ayop - posté le 16/03/2013 à 09:24:09. (847 messages postés)

J'ai pris cet exemple pour contraster avec le fait que ces films de merde dont je parle, qui se prennent au sérieux, ne sont justement pas aussi cohérent que "hey mec elle est où ma caisse ?". Et j'ai jamais dis que le film était mauvais. J'avais bien tripper dessus. La première fois. A douze ans. xD

Vous oubliez de prendre en compte un aspect non négligeable des James Bond, et en particulier avec Daniel Craig

Spoiler (cliquez pour afficher)


C'est un putain d'alcoolo.^^
Et aussi un peu un puceau par rapport à ses prédécesseurs.

Posté dans Forum - [RMXP] La 7e porte

ayop - posté le 15/03/2013 à 22:45:24. (847 messages postés)

J'ai commencé à jouer, parce que j'aime bien les jeux multimaker. Pour le moment j'aime bien, c'est pas prise de tête comme jeu. On prend plutôt plaisir à jouer. Et j'aime bien l'histoire pour le peu que j'ai vu. Le gameplay est plutôt cool et bien réalisé. Le fait de pouvoir contrôler les pnj c'est sympa (j'espère que ce sera mieux exploité par la suite juste). Donc voilà, j'aime bien pour l'instant, c'est du bon boulot.
Et j'ai finis le mini jeu de Roi of the Suisse du premier coup!

Posté dans Forum - Topic du Cinéma

Ayop - posté le 15/03/2013 à 22:31:55. (847 messages postés)

Bah tu dois pas voir souvent de vrais films de merde alors. Je parle pas de nanars assumés. Je parle de vrais films de merde, qui pique autant qu'un caca d'après bucket 33 du KFC. Tu vois ? Les films sans âme ni propos, sans queue ni tête, si incohérent que "hey mec elle est où ma caisse?" semble être un modèle de vraisemblance. Les films tellement merdique qu'on se demande à la fin qui sont les cons qui ont pu être aussi con pour produire un tel film de merde. (J'aime la vulgarité)
Bref, si tu vois pas, je peux t'en conseiller deux ou trois, notamment dans l'horreur, surtout dans l'horreur. Et après tu craqueras ton slibard à la vu d'un A Serbian Film. Je rigole pas hein. On est doué ma copine et moi pour tomber sur ce genre de bouzin.

Posté dans Forum - Topic du Cinéma

Ayop - posté le 15/03/2013 à 14:16:51. (847 messages postés)

Oh ! A Serbian Film il est cool !:mecontent10

Posté dans Forum - Topic du Cinéma

Ayop - posté le 12/03/2013 à 17:47:02. (847 messages postés)

Je suis d'accord avec Nemau. Pitch Black était énorme. Les Chroniques, trop différent, j'ai pas aimé le virage qu'a pris la saga. Du coup, je redoute un troisième épisode.^^

Pour Sucker Punch, j'ai même pas réussi à le matter jusqu'au bout tellement je me suis fait chier.

Posté dans Forum - Le retour des débilités du net.

ayop - posté le 11/03/2013 à 23:07:27. (847 messages postés)

Moi il me fait penser à Jigsaw.

Posté dans Forum - [BD] Guêpe-Ride! [MAJ 11/01/2020-Tomes 1 et 2 dispo]

Ayop - posté le 10/03/2013 à 18:41:16. (847 messages postés)

² a dit:


Citation:

je trouve tes décors un peu pauvres et qu'ils manquent de texture.



Euh... et les ombres sont pas réalistes ?
C'est une BD, pas un projet de jeu vidéo... quoique au début c'était un projet. Et assez prometteur en plus.



Une BD c'est un gros travail de narration et de lisibilité qu'il faut mettre au service d'un récit et de son contenu; de la même manière que pour un jeu vidéo. Les décors sont un aspect non négligeable pour un tel travail, dans un cas comme dans l'autre.

Perso, je suis plutôt d'accord avec El_Machin. Même si les planches de Rockwood sont très compréhensible et d'une bonne qualité général, elles reste perfectibles graphiquement.

Posté dans Forum - SARCIA

Ayop - posté le 06/03/2013 à 09:37:42. (847 messages postés)

C'est très joli, avec une belle ambiance qui doit être plutôt enivrante in-game. Mais dis, la perspective sur la garde de l'épée n'est pas un peu foirée?
Sinon bravo, c'est classe. Bonne continuation.

EDIT : Voilà. :)

Posté dans Forum - Topic du Cinéma

Ayop - posté le 06/03/2013 à 09:27:08. (847 messages postés)

Moi j'ai vu Django Unchained hier, et j'ai pas été emballé. Je me suis même fais plutôt chier sur de longs moments. J'ai trouvé le rythme du film très mal géré, avec des longueurs étouffantes malgré des personnages charismatiques et des dialogues intéressants. Et c'est pas l'humour, les plans et les idées sympatoches qui rattrapent, d'après moi, cette lacune.

Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 05/03/2013 à 18:31:54. (847 messages postés)



Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 04/03/2013 à 12:24:26. (847 messages postés)

Et moi celui là :



Posté dans Forum - [BD] Guêpe-Ride! [MAJ 11/01/2020-Tomes 1 et 2 dispo]

Ayop - posté le 27/02/2013 à 22:19:38. (847 messages postés)

La dernière case manque d’onomatopées je trouve. Ou de décor peut être. en tout cas ça fait vide.

Posté dans Forum - Screenshots de vos jeux !

Ayop - posté le 21/02/2013 à 13:37:10. (847 messages postés)

Le premier.

Posté dans Forum - Screenshots de vos jeux !

Ayop - posté le 15/02/2013 à 22:50:44. (847 messages postés)

J'ai suivi vos conseils, c'est effectivement mieux.^^
Merci à vous pour vos conseils et critiques. :)

Posté dans Forum - Screenshots de vos jeux !

Ayop - posté le 15/02/2013 à 20:45:18. (847 messages postés)

Raymond du Piedmont a dit:


La lumière de tes fenêtres est une peu chelou, elle semble trop diffuse et a une forme pas naturelle.


Oui, tu n'as pas tord. :)
Mais je verrai ça plus tard, pour le moment c'est plus un test qu'autre chose en fait. Donc si y a plusieurs genre d'éclairage de fenêtre à faire (et y en a déjà XD), ce sera du détail. Que je vais remettre à plus tard. Parce que je suis un flemmard.
Ça rime.

Raymond du Piedmont a dit:


Il manque un lit dans ton appart (sauf si y'a une autre pièce sur la droite), ce qui tombe bien puisque t'as un léger vide en bas a gauche de ta pièce.


Oui, il y a deux autres pièces, mais sur la droite.:D En bas c'est la sortie.

Raymond du Piedmont a dit:


Sinon c'est très classieux dans le choix des couleurs.


Merci. Mais j'ai rien choisi en vrai.:D

Chaös17 a dit:


Je te conseil juste de changer le sol et les tapis. Il ne vont pas très bien avec les meubles contemporain. :F


Pas faux. Mais j'ai pas vraiment envie de m'emmerder avec ça maintenant. Ingame ça gène pas j'trouve.^^
Après si j'arrive à dégoter mieux, pourquoi pas. J'vais peut être aller télécharger un de tes petits pack de ressource sur ton blog.^^

Posté dans Forum - Screenshots de vos jeux !

Ayop - posté le 15/02/2013 à 18:30:58. (847 messages postés)

Magic : Je vois pas trop ce qu'il faut voir ... Le rouge ou le noir ?:F
Non sérieux je vois pas ce que ça représente.

image
Moi z'ai fais ça. C'est zoulie ?:amour2

Posté dans Forum - Topic de l'informatique

Ayop - posté le 14/02/2013 à 13:50:28. (847 messages postés)

Y a Format Factory aussi. Après c'est un logiciel de conversion, donc je sais pas si c'est efficace pour compresser, mais y a pas plus simple d'utilisation.

Posté dans Forum - [JEU] Qu'est-ce que c'est ?

Ayop - posté le 14/02/2013 à 13:46:27. (847 messages postés)

Du PVC spécial ?

EDIT : Pouet pouet.

Posté dans Forum - Slatsher (Metal Extrême)

Ayop - posté le 13/02/2013 à 14:17:50. (847 messages postés)

Hihi, merci les coupaings ! :D
Je posterais prochainement une vidéos de notre dernier live qu'était plutôt cool. Si ça vous intéresse. :P

Posté dans Forum - Site de ressources sonores gratuite !

Ayop - posté le 13/02/2013 à 14:02:48. (847 messages postés)

http://www.freesound.org/

Posté dans Forum - [BD] Guêpe-Ride! [MAJ 11/01/2020-Tomes 1 et 2 dispo]

Ayop - posté le 13/02/2013 à 00:08:33. (847 messages postés)

Wololol. La schtroumpfette s'est pris une tapette dans l'cul !

Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 13/02/2013 à 00:06:21. (847 messages postés)



Posté dans Forum - Topic du Cinéma

Ayop - posté le 13/02/2013 à 00:02:51. (847 messages postés)

Et j'oubliais aussi Action ou Vérité, un film d'horreur en huit clos autour d'un pitch très simpliste mais qui au fil de l'histoire s'avère être beaucoup plus compliqué qu'il n'y parait aux premiers abords. En plus les péripéties, personnages et rebondissements sont loin d'être des clichés sur-utilisés dans le genre aujourd'hui. Bien que le début de l'histoire joue beaucoup là-dessus.
Je le conseil vraiment. C'est pas un film de ouf qui restera dans les annales, mais il a au moins le mérite de ne pas se reposer sur les mécanismes bidons qu'utilisent la plupart des slashers moisie comme celui que je viens de voir (Sœurs de Sang, 2009, celui là, je le déconseille fortement, l'histoire est plus que merdique).

Posté dans Forum - Topic du Cinéma

ayop - posté le 12/02/2013 à 23:32:54. (847 messages postés)

Bah Martyrs est pas aussi trash qu'on le dit. Il est bien construit avec un développement plutôt original pour le genre. Mais y a des longueurs si ma memoire ne me joue pas des tours, mais j'ai pas aimé. Le film reste néanmoins plein de qualité.

Dans un autre genre, Moon est terrible aussi, mais je suppose que tu l'as vu.

Sinon récemment j'ai vu Tucker et Dale fightent le mal, je l'ai regardé deux fois de suite tellement il m'a fais rire. Et avec des repliques franchement hilarantes.

Posté dans Forum - Topic du Cinéma

Ayop - posté le 12/02/2013 à 22:51:18. (847 messages postés)

Martyr est pas terrible, beaucoup de bruit pour pas grand chose. La Horde est sympa et plutôt marrant. Peut être que tu aimerais bien Calvaire aussi, assez dérangeant.
Si t'aime bien la science fiction, Pandorum est plutôt cool.

Posté dans Forum - Topic du Cinéma

Ayop - posté le 12/02/2013 à 19:13:21. (847 messages postés)

GeckoEssence -> A Serbian Film ! :grossourire
Ou la cabane dans les bois.:sifflote
Non plus sérieusement, j'ai bien aimé Les Disparus dernièrement. Je l'avais déjà vu, mais j'ai redécouvert l'histoire avec plaisir.

Posté dans Forum - Topic du Cinéma

Ayop - posté le 12/02/2013 à 11:42:23. (847 messages postés)

Spoiler (cliquez pour afficher)


Trollolol !:hurle

Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 11/02/2013 à 22:09:31. (847 messages postés)

image

Posté dans Forum - [Scripts] Petites questions connes sur les SCRIPTS!!

Ayop - posté le 11/02/2013 à 15:33:48. (847 messages postés)

Désolé ratorix de passer devant toi alors que personne ne t'as encore répondu, mais j'ai aussi besoin d'un coup de main. Ne l'oubliez pas quand même. :sourire2

Support : RM VX Ace
Question : Alors voilà, j'essaye d'installer quelques scripts pour rendre les déplacement du héros plus cool. Mais j'ai un petit problème.
Donc pour résumer, j'ai installé ces scripts de Victor :
1) Le Victor Engine - Basic Engine : Script ici.
2) Le Rotation Turning (qui permet de faire faire une rotation sur lui même au héros lors d'un demi-tour) : Script ici.
3) Le Pixel Movement (qui ne permet pas le déplacement en diagonale) : Script ici.
4) Le Diagonal Movement (pour pallier au défaut du script précédent) : Script ici.
(Je précise que tous ces script sont du même auteur, Victor donc.

Le problème vient de ce dernier script, Diagonal Movement : Lorsque je lance le jeu, tout va bien, l'écran titre apparait et je peux lancer ma partie. Mais dès que je bouge le héros, dans n'importe quelle directions, ce message d'erreur s'affiche :

Spoiler (cliquez pour afficher)


Alors comme je suis une teub en Ruby, quand j'ai une erreur comme ça, j'efface la ligne. Pour voir.:grossourire
Donc je relance le jeu, pareil, écran titre, je lance ma partie et là, dès que je bouge mon héros :

Spoiler (cliquez pour afficher)


Donc une fois de plus, j'efface cette ligne et je relance le jeu. Il s'agit de ces deux lignes donc :

Portion de code : Tout sélectionner

1
2
    sy = (index / 4 * 4 + dir) * @ch
    self.src_rect.set(sx, sy, @cw, @ch)


Et là tout marche, même les diagonales, mais sans les animations du héros pendant ces dernières.
Je m'explique : Après avoir effacé ces deux lignes, les quatre directions normales du héros fonctionnent avec tous les script que j'ai installé (pixel par pixel et rotation lors d'un demi tour); mais lors des diagonales, l'animation de marche du héros n'est plus affiché.

Voilà mon petit problème, je ne pense pas que ce soit très dur à régler, mais comme je l'ai dit, je suis vraiment un teub en Ruby. Il faut comprendre par là que je ne connais absolument rien. Donc un peu d'aide ne serait vraiment pas de refus.
Merci beaucoup d'avance à celui qui saura m'aider. :)

EDIT : Bon, bah je viens aussi de remarquer que la touche action ne marche plus ... A part dans le menu qui lui marche très bien.
Apparemment ça vient du script pixel par pixel, puisque quand je le supprime tout remarche. Je vais voir si je ne peux pas régler ça. :)
Et après quelques test, j'ai l'impression que ça vient d'une incompatibilité entre le script Pixel Movement de Victor et le Awesome Light Effect de Khas :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
#-------------------------------------------------------------------------------
# * [ACE] Khas Awesome Light Effects
#-------------------------------------------------------------------------------
# * By Khas Arcthunder - arcthunder.site40.net
# * Version: 1.0 EN
# * Released on: 17/01/2012
#
#-------------------------------------------------------------------------------
# * Terms of Use
#-------------------------------------------------------------------------------
# When using any Khas script, you agree with the following terms:
# 1. You must give credit to Khas;
# 2. All Khas scripts are licensed under a Creative Commons license;
# 3. All Khas scripts are for non-commercial projects. If you need some script 
#    for your commercial project (I accept requests for this type of project), 
#    send an email to nilokruch@live.com with your request;
# 4. All Khas scripts are for personal use, you can use or edit for your own 
#    project, but you are not allowed to post any modified version;
# 5. You can’t give credit to yourself for posting any Khas script;
# 6. If you want to share a Khas script, don’t post the direct download link, 
#    please redirect the user to arcthunder.site40.net
#
#-------------------------------------------------------------------------------
# * Features
#-------------------------------------------------------------------------------
# - Realistic Light
# - Light does not pass over walls, blocks and roofs
# - Static Light Sources
# - Dynamic Light Sources (like a player's lantern)
# - Multiple effects
# - Easy to use (comments)
#
#-------------------------------------------------------------------------------
# * WARNING - Performance
#-------------------------------------------------------------------------------
# This script may be too heavy to old processors! The Awesome Light Effects was
# tested on a Core 2 Duo E4500 and on a Core i5, without any lag. However,
# there's other factors that may influence the script performance:
#
# 1. Map size
# This script searches surfaces on the map, in order to cut the light pictures.
# In a huge map, the number of surfaces may increase a lot, affecting the
# DYNAMIC LIGHT SOURCE only. Map size does not influence the static sources.
#
# 2. Number of effects
# This script draws the effects on the screen, but before drawing, it checks 
# if the effect is out of screen (in this case, the script will skip the 
# light drawing). Too much effects may cause lag, but this is just a prevision.
#
# 3. Effect's picture size
# The picture size of the DYNAMIC LIGHT SOURCE influences directly on your 
# game's performace. The bigger is the picture, the slower it will be to
# draw it dynamically. The recommended maximum size is 200x200 pixels
# 
#-------------------------------------------------------------------------------
# * WARNING - Light pictures
#-------------------------------------------------------------------------------
# In order to run this script correctly, the light pictures MUST obey the
# following conditions:
# 1. The picture's size MUST be multiple of 2. Example: 150x150
# 2. The picture's width MUST be equal to it's height. Example: 156x156
# 3. The picture's colors MUST be inverted! This is necessary because
#    the script inverts the colors to draw the effect. The black color
#    will be transparent!
#
#-------------------------------------------------------------------------------
# * Instructions - 1. Setup your effects!
#-------------------------------------------------------------------------------
# In order to setup your static effects, go to the setup part and define your
# effects inside the Effects hash. Do as the following mode:
#
# X => [picture,opacity,variation,cut],   <= Remember to put a comma here!
#
# Where:
# picture => Picture's name, inside the Graphics/Lights folder;
# opacity => Effect's opacity;
# variation => Effect's opacity variation;
# cut => Put true to cut the effect or false to don't;
# X => The effect's ID, it will be used on events. 
#
# Check the default effects to understand how they work.
#
#-------------------------------------------------------------------------------
# * Instructions - 2. Use your effects!
#-------------------------------------------------------------------------------
# In order to use a effect, put the following comment on a event:
# 
# [light x]
#
# Where x must be the Effect's ID.
# 
#-------------------------------------------------------------------------------
# * Instructions - 3. Use an awesome lantern!
#-------------------------------------------------------------------------------
# The dynamic light source (lantern) is initialized invisible by default. 
# You may call the following commands:
# 
# l = $game_map.lantern
# Gets the lantern into a variable
 
# l.set_graphic(i)
# Sets the lantern's graphic to i, where i must be the picture's file name on 
# Graphics/Lights folder.
#
# l.set_multiple_graphics(h)
# Sets the lantern's graphics to h, where h must be a hash with the following
# structure:
#
# h = {2=>"ld",4=>"ll",6=>"lr",8=>"lu"}
# 
# Where: 
# "ld" is the name of the picture when the lantern's owner is looking down;
# "ll" is the name of the picture when the lantern's owner is looking left;
# "lr" is the name of the picture when the lantern's owner is looking right;
# "lu" is the name of the picture when the lantern's owner is looking up.
#
# l.change_owner(char)
# Sets the lantern's owner to char. Char must be ONE of the following commands:
# $game_player           <= The player itself;
# self_event             <= The event where the command was called;
# $game_map.events[x]    <= The event ID x.
#
# l.set_opacity(o,p)
# Sets the lantern's opacity, where:
# o is the opacity itself;
# p is the opacity variation.
#
# l.show
# After setting the lantern with the commands above, you may set it to visible
# using this command.
#
# l.hide
# Use this command to set the lantern as invisible.
#
#-------------------------------------------------------------------------------
# * Instructions - 4. Use the effect's surface!
#-------------------------------------------------------------------------------
# The Awesome Light Effects draws the effects on a surface. In order to make
# the effects visible, the effect's surface MUST be visible. The Effect's 
# Surface is initialized with it's opacity set to zero. You can call the
# following commands:
#
# s = $game_map.effect_surface
# Gets the Effect's Surface into a variable
#
# s.set_color(r,g,b)
# Changes the Effect's Surface color instantly, where:
# r => red level;
# g => green level;
# b => blue level;
#
# s.set_alpha(a)
# Changes the Effect's Surface opacity instantly to a.
#
# s.change_color(time,r,g,b)
# Changes the Effect's Surface color ONLY in a certain time, where:
# time => The change's time (frames);
# r => red level;
# g => green level;
# b => blue level;
#
# s.change_color(time,r,g,b,a)
# Changes the Effect's Surface color and it's opacity in a certain time, where:
# time => The change's time (frames);
# r => red level;
# g => green level;
# b => blue level;
# a => opacity
#
# s.change_alpha(time,a)
# Changes the Effect's Surface opacity in a certain time, where:
# time => The change's time (frames);
# a => opacity
#
#-------------------------------------------------------------------------------
# * Instructions - 5. Use the effect's surface with Tone command!
#-------------------------------------------------------------------------------
# You can access the Effect's Surface with the "Screen Tone" command. In order
# to turn this feature on, set the "Surface_UE" constant to true.
#
# If you decided to use this feature, please note some details:
# 1. The colors values must be between 0 and 255;
# 2. The time is in frames;
# 3. The "gray" value will be sent as the opacity value
#
#-------------------------------------------------------------------------------
# * Instructions - 6. Setup your Tileset Tags!
#-------------------------------------------------------------------------------
# In order to cut the effect's picture correctly, there's 3 types of behavior
# for a tile: wall, block and roof. Walls will make shadows as real walls, 
# blocks as blocks and roofs as roofs. So, the tileset tags MUST be configured.
# Check the demo to understand how this system works. If the tilesets aren't 
# configured correctly, the script won't cut the effects correctly.
# 
#-------------------------------------------------------------------------------
# * Setup Part
#-------------------------------------------------------------------------------
module Light_Core
  Effects = { #  <= DON'T change this!
#-------------------------------------------------------------------------------
# PUT YOUR EFFECTS HERE!
#-------------------------------------------------------------------------------
  0 => ["light",255,0,true],
  1 => ["torch",200,20,true],
  2 => ["torch_m",180,30,true],
  3 => ["light_s",255,0,true],
  4 => ["lumifen",255,0,true],
  5 => ["light",255,50,true],
  6 => ["light_m",100,0,true],
  
#-------------------------------------------------------------------------------
# End of effecs configuration
#------------------------------------------------------------------------------- 
  } #  <= DON'T change this!
  
  # Z coordinate of the Effect's Surface
  Surface_Z = 180
  
  # Enable Effect's Surface control by "Screen Tone" command?
  Surface_UE = true
  
  # Roof behavior tag
  Roof_Tag = 3
  # Wall behavior tag
  Wall_Tag = 2
  # Block behavior tag
  Block_Tag = 1
  
  # Don't change this!
  ACC = Math.tan(Math::PI/26)
end
#-------------------------------------------------------------------------------
# Script
#-------------------------------------------------------------------------------
module Cache
  def self.light(filename)
    load_bitmap("Graphics/Lights/", filename)
  end
end
module Light_Bitcore
  include Light_Core
  def self.initialize
    @@buffer = {}
    Effects.values.each { |effect| Light_Bitcore.push(effect[0])}
  end
  def self::[](key)
    return @@buffer[key]
  end
  def self.push(key)
    return if @@buffer.keys.include?(key)
    @@buffer[key] = Cache.light(key)
  end
end
Light_Bitcore.initialize
class Light_SSource
  attr_reader :real_x
  attr_reader :real_y
  attr_reader :range
  attr_accessor :bitmap
  attr_reader :w
  attr_reader :h
  attr_reader :hs
  def initialize(char,bitmap,opacity,plus,hs)
    sync(char)
    @key = bitmap
    @bitmap = Light_Bitcore[@key].clone
    @range = @bitmap.width/2
    @w = @bitmap.width
    @h = @bitmap.height
    @mr = @range - 16
    @opacity = opacity
    @plus = plus
    @hs = hs
    render if @hs
  end
  def render
    tx = x
    ty = y
    tsx = x + @range
    tsy = y + @range
    dr = @range*2
    for s in $game_map.surfaces
      next if !s.visible?(tsx,tsy) || !s.within?(tx,tx+dr,ty,ty+dr)
      s.render_shadow(tx,ty,tsx,tsy,@range,@bitmap)
    end
  end
  def restore
    return unless @bitmap.nil?
    @bitmap = Light_Bitcore[@key].clone
    render if @hs
  end
  def opacity
    @plus == 0 ? @opacity : (@opacity + rand(@plus))
  end
  def sx
    return $game_map.adjust_x(@real_x)*32-@mr
  end
  def sy
    return $game_map.adjust_y(@real_y)*32-@mr
  end
  def sync(char)
    @real_x = char.real_x
    @real_y = char.real_y
  end
  def x
    return (@real_x*32 - @mr).to_f
  end
  def y
    return (@real_y*32 - @mr).to_f
  end
  def dispose
    return if @bitmap.nil?
    @bitmap.dispose
    @bitmap = nil
  end
end
class Light_DSource < Light_SSource
  attr_reader :bitmap
  attr_reader :visible
  def initialize
    @key = nil
    @bitmap = nil
    @opacity = 255
    @plus = 0
    @char = $game_player
    @visible = false
  end
  def set_opacity(o,p)
    @opacity = o
    @plus = p
  end
  def set_graphic(sb)
    dispose
    @key = {2=>sb,4=>sb,6=>sb,8=>sb}
    Light_Bitcore.push(sb)
    @bitmap = {2=>Light_Bitcore[@key[2]].clone,4=>Light_Bitcore[@key[4]].clone,6=>Light_Bitcore[@key[6]].clone,8=>Light_Bitcore[@key[8]].clone}
    @range = @bitmap[2].width/2
    @w = @bitmap[2].width
    @h = @bitmap[2].height
    @mr = @range - 16
  end
  def set_multiple_graphics(ba)
    dispose
    @key = ba
    @key.values.each {|key| Light_Bitcore.push(key)}
    @bitmap = {2=>Light_Bitcore[@key[2]].clone,4=>Light_Bitcore[@key[4]].clone,6=>Light_Bitcore[@key[6]].clone,8=>Light_Bitcore[@key[8]].clone}
    @range = @bitmap[2].width/2
    @w = @bitmap[2].width
    @h = @bitmap[2].height
    @mr = @range - 16
  end
  def get_graphic
    return @bitmap[@char.direction].clone
  end
  def show
    return if @bitmap.nil?
    @visible = true
  end
  def hide
    @visible = false
  end
  def restore
    return if @key.nil?
    @key.values.each {|key| Light_Bitcore.push(key)}
    @bitmap = {2=>Light_Bitcore[@key[2]].clone,4=>Light_Bitcore[@key[4]].clone,6=>Light_Bitcore[@key[6]].clone,8=>Light_Bitcore[@key[8]].clone}
  end
  def dispose
    return if @bitmap.nil?
    @bitmap.values.each { |b| b.dispose }
    @bitmap = nil
  end
  def change_owner(char)
    @char = char
  end
  def render
  end
  def sx
    return $game_map.adjust_x(@char.real_x)*32-@mr
  end
  def sy
    return $game_map.adjust_y(@char.real_y)*32-@mr
  end
  def x
    return (@char.real_x*32 - @mr).to_f
  end
  def y
    return (@char.real_y*32 - @mr).to_f
  end
end
class Light_Surface
  def initialize
    @ta = @a = 0
    @tr = @r = 255
    @tg = @g = 255
    @tb = @b = 255
    @va = @vr = @vg = @vb = 0.0
    @timer = 0
  end
  def refresh
    return if @timer == 0
    @a += @va
    @r += @vr
    @g += @vg
    @b += @vb
    $game_map.light_surface.opacity = @a
    @timer -= 1
  end
  def change_color(time,r,g,b,a=nil)
    r = 0 if r < 0; r = 255 if r > 255
    g = 0 if g < 0; g = 255 if g > 255
    b = 0 if b < 0; b = 255 if b > 255
    unless a.nil?
      a = 0 if a < 0; a = 255 if a > 255
    end
    @timer = time
    @tr = 255-r
    @tg = 255-g
    @tb = 255-b
    @va = (a.nil? ? 0 : (a-@a).to_f/@timer)
    @vr = (@tr - @r).to_f/@timer
    @vg = (@tg - @g).to_f/@timer
    @vb = (@tb - @b).to_f/@timer
  end
  def change_alpha(time,a)
    a = 0 if a < 0; a = 255 if a > 255
    @timer = time
    @ta = a
    @vr = @vg = @vb = 0.0
    @va = (a-@a).to_f/@timer
  end
  def set_color(r,g,b)
    r = 0 if r < 0; r = 255 if r > 255
    g = 0 if g < 0; g = 255 if g > 255
    b = 0 if b < 0; b = 255 if b > 255
    @tr = @r = 255-r
    @tg = @g = 255-g
    @tb = @b = 255-b
    @va = @vr = @vg = @vb = 0.0
    @timer = 0
  end
  def set_alpha(a)
    a = 0 if a < 0; a = 255 if a > 255
    @ta = @a = a
    $game_map.light_surface.opacity = @a
    @va = @vr = @vg = @vb = 0.0
    @timer = 0
  end
  def alpha
    return @a
  end
  def color
    return Color.new(@r,@g,@b)
  end
end
class Game_Map
  include Light_Core
  attr_accessor :light_surface
  attr_accessor :light_sources
  attr_accessor :surfaces
  attr_accessor :effect_surface
  attr_accessor :lantern
  alias kbl_setup_events setup_events
  alias kbl_initialize initialize
  alias kbl_update update
  def initialize
    kbl_initialize
    @effect_surface = Light_Surface.new
    @lantern = Light_DSource.new
  end
  def update(arg)
    @effect_surface.refresh if arg
    kbl_update(arg)
  end
  def first_tag(x,y)
    tag = tileset.flags[tile_id(x,y,0)] >> 12
    return tag > 0 ? tag : 0
  end
  def setup_events
    @light_sources.nil? ? @light_sources = [] : @light_sources.clear
    setup_surfaces
    merge_surfaces
    kbl_setup_events
  end
  def setup_surfaces
    @surfaces = []
    for x in 0..(width-1)
      for y in 0..(height-1)
        tag = first_tag(x,y)
        if tag == Wall_Tag
          i = tile_id(x,y,0)
          if i & 0x02 == 0x02
            @surfaces << Block_SD.new(x*32,y*32,x*32+32,y*32)
          end
          if i & 0x04 == 0x04
            @surfaces << Block_WR.new(x*32+31,y*32,x*32+31,y*32+32)
            @surfaces << Block_IL.new(x*32+32,y*32,x*32+32,y*32+32)
          end
          if i & 0x01 == 0x01
            @surfaces << Block_IR.new(x*32-1,y*32,x*32-1,y*32+32)
            @surfaces << Block_WL.new(x*32,y*32,x*32,y*32+32)
          end
        elsif tag == Roof_Tag
          i = tile_id(x,y,0)
          @surfaces << Block_SU.new(x*32,y*32,x*32+32,y*32) if i & 0x02 == 0x02
          @surfaces << Block_SR.new(x*32+31,y*32,x*32+31,y*32+32) if i & 0x04 == 0x04
          @surfaces << Block_SL.new(x*32,y*32,x*32,y*32+32) if i & 0x01 == 0x01
        elsif tag == Block_Tag
          f = tileset.flags[tile_id(x,y,0)]
          @surfaces << Block_SL.new(x*32,y*32,x*32,y*32+32) if f & 0x02 == 0x02
          @surfaces << Block_SR.new(x*32+31,y*32,x*32+31,y*32+32) if f & 0x04 == 0x04
          @surfaces << Block_SU.new(x*32,y*32,x*32+32,y*32) if f & 0x08 == 0x08
        end
      end
    end
  end
  def merge_surfaces
    new_surfaces = []
    hs = []; vs = []
    ws = []; is = []
    for surface in @surfaces
      if surface.type & 0x05 == 0
        hs << surface
      else
        if surface.type & 0x010 == 0
          vs << surface
        else
          if surface.type & 0x08 == 0
            ws << surface
          else
            is << surface
          end
        end
      end
    end
    for surface in hs
      surface.ready ? next : surface.ready = true
      for s in hs
        next if s.ready || s.y1 != surface.y1 || surface.type != s.type
        if s.x2 == surface.x1
          surface.x1 = s.x1
          s.trash = true
          s.ready = true
          surface.ready = false
        elsif s.x1 == surface.x2
          surface.x2 = s.x2
          s.trash = true
          s.ready = true
          surface.ready = false
        end
      end
    end
    hs.each { |s| @surfaces.delete(s) if s.trash}
    for surface in vs
      surface.ready ? next : surface.ready
      for s in vs
        next if s.ready || s.x1 != surface.x1
        if s.y2 == surface.y1
          surface.y1 = s.y1
          s.trash = true
          s.ready = true
          surface.ready = false
        elsif s.y1 == surface.y2
          surface.y2 = s.y2
          s.trash = true
          s.ready = true
          surface.ready = false
        end
      end
    end
    vs.each { |s| @surfaces.delete(s) if s.trash}
    for surface in ws
      surface.ready ? next : surface.ready
      for s in ws
        next if s.ready || s.x1 != surface.x1
        if s.y2 == surface.y1
          surface.y1 = s.y1
          s.trash = true
          s.ready = true
          surface.ready = false
        elsif s.y1 == surface.y2
          surface.y2 = s.y2
          s.trash = true
          s.ready = true
          surface.ready = false
        end
      end
    end
    ws.each { |s| @surfaces.delete(s) if s.trash}
    for surface in is
      surface.ready ? next : surface.ready
      for s in is
        next if s.ready || s.x1 != surface.x1
        if s.y2 == surface.y1
          surface.y1 = s.y1
          s.trash = true
          s.ready = true
          surface.ready = false
        elsif s.y1 == surface.y2
          surface.y2 = s.y2
          s.trash = true
          s.ready = true
          surface.ready = false
        end
      end
    end
    is.each { |s| @surfaces.delete(s) if s.trash}
  end
end
class Game_Event < Game_Character
  alias kbl_initialize initialize
  alias kbl_setup_page setup_page
  def initialize(m,e)
    @light = nil
    kbl_initialize(m,e)
  end
  def setup_page(np)
    kbl_setup_page(np)
    setup_light(np.nil?)
  end
  def setup_light(dispose)
    unless @light.nil?
      $game_map.light_sources.delete(self)
      @light.dispose
      @light = nil
    end
    unless dispose && @list.nil?
      for command in @list
        if command.code == 108 && command.parameters[0].include?("[light")
          command.parameters[0].scan(/\[light ([0.0-9.9]+)\]/)
          effect = Light_Core::Effects[$1.to_i]
          @light = Light_SSource.new(self,effect[0],effect[1],effect[2],effect[3])
          $game_map.light_sources << self
          return
        end
      end
    end
  end
  def draw_light
    sx = @light.sx
    sy = @light.sy
    w = @light.w
    h = @light.h
    return if sx > 544 && sy > 416 && sx + w < 0 && sy + h < 0
    $game_map.light_surface.bitmap.blt(sx,sy,@light.bitmap,Rect.new(0,0,w,h),@light.opacity)
  end
  def dispose_light
    @light.dispose
  end
  def restore_light
    @light.restore
  end
end
if Light_Core::Surface_UE
  class Game_Interpreter
    def command_223
      $game_map.effect_surface.change_color(@params[1],@params[0].red,@params[0].green,@params[0].blue,@params[0].gray)
      wait(@params[1]) if @params[2]
    end
  end
end
class Game_Interpreter
  def self_event
    return $game_map.events[@event_id]
  end
end
class Block_Surface
  include Light_Core
  attr_accessor :x1
  attr_accessor :y1
  attr_accessor :x2
  attr_accessor :y2
  attr_accessor :ready
  attr_accessor :trash
  def initialize(x1,y1,x2,y2)
    @x1 = x1
    @y1 = y1
    @x2 = x2
    @y2 = y2
    @ready = false
    @trash = false
  end
  def within?(min_x,max_x,min_y,max_y)
    return @x2 > min_x && @x1 < max_x && @y2 > min_y && @y1 < max_y
  end
end
class Block_SL < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x01
  end
  def visible?(sx,sy)
    return sx < @x1 
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = sy - @m1*sx
    @m2 = (@y2-sy)/(@x2-sx)
    @n2 = sy - @m2*sx
    for x in @x1..(sx+range)
      init = shadow_iy(x)
      bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+3)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_SR < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x04
  end
  def visible?(sx,sy)
    return sx > @x1 
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = sy - @m1*sx
    @m2 = (@y2-sy)/(@x2-sx)
    @n2 = sy - @m2*sx
    for x in (sx-range).to_i..@x1
      init = shadow_iy(x)
      bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+3)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_IL < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x019
  end
  def visible?(sx,sy)
    return sx < @x1 && sy > @y1
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = @y1 - @m1*@x1
    @m2 = (@y2-sy)/(@x2-sx)
    @m2 = 0 if @m2 > 0
    @n2 = @y2 - @m2*@x2
    for x in @x1..(sx+range)
      init = shadow_iy(x).floor
      bitmap.clear_rect(x-phx,init-3-phy,1,shadow_fy(x)-init+3)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_IR < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x01c
  end
  def visible?(sx,sy)
    return sx > @x1 && sy > @y1
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = @y1 - @m1*@x1
    @m2 = (@y2-sy)/(@x2-sx)
    @m2 = 0 if @m2 < 0
    @n2 = @y2 - @m2*@x2
    for x in (sx-range).to_i..@x1
      init = shadow_iy(x).floor
      bitmap.clear_rect(x-phx,init-3-phy,1,shadow_fy(x)-init+3)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_WL < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x011
  end
  def visible?(sx,sy)
    return sx < @x1 && sy < @y2
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = sy - @m1*sx
    @m2 = (@y2-sy)/(@x2-sx)
    @n2 = sy - @m2*sx
    for x in @x1..(sx+range)
      init = shadow_iy(x)
      bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+2)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_WR < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x014
  end
  def visible?(sx,sy)
    return sx > @x1 && sy < @y2
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    @m1 = (@y1-sy)/(@x1-sx)
    @n1 = sy - @m1*sx
    @m2 = (@y2-sy)/(@x2-sx)
    @n2 = sy - @m2*sx
    for x in (sx-range).to_i..@x1
      init = shadow_iy(x)
      bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+2)
    end
  end
  def shadow_iy(x)
    return @m1*x+@n1
  end
  def shadow_fy(x)
    return @m2*x+@n2
  end
end
class Block_SU < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x02
  end
  def visible?(sx,sy)
    return sy < @y1
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    if @x1 == sx
      @m1 = nil
    else
      @m1 = (@y1-sy)/(@x1-sx)
      @m1 += ACC if @m1 < -ACC
      @n1 = @y1 - @m1*@x1
    end
    if @x2 == sx
      @m2 = nil
    else
      @m2 = (@y2-sy)/(@x2-sx)
      @n2 = sy - @m2*sx
    end
    for y in @y1..(sy+range)
      init = shadow_ix(y)
      bitmap.clear_rect(init-phx,y-phy,shadow_fx(y)-init+1,1)
    end
  end
  def shadow_ix(y)
    return @m1.nil? ? @x1 : (y-@n1)/@m1
  end
  def shadow_fx(y)
    return @m2.nil? ? @x2 : (y-@n2)/@m2
  end
end
class Block_SD < Block_Surface
  attr_reader :type
  def initialize(x1,y1,x2,y2)
    super(x1,y1,x2,y2)
    @type = 0x08
  end
  def visible?(sx,sy)
    return sy > @y1
  end
  def render_shadow(phx,phy,sx,sy,range,bitmap)
    if @x1 == sx
      @m1 = nil
    else
      @m1 = (@y1-sy)/(@x1-sx)
      @m1 -= ACC if @m1 > ACC
      @n1 = sy - @m1*sx
    end
    if x2 == sx
      @m2 = nil
    else
      @m2 = (@y2-sy)/(@x2-sx)
      @n2 = sy - @m2*sx
    end
    for y in (sy-range).to_i..@y1
      init = shadow_ix(y)
      bitmap.clear_rect(init-phx,y-phy,shadow_fx(y)-init+1,1)
    end
  end
  def shadow_ix(y)
    return @m1.nil? ? @x1 : (y-@n1)/@m1
  end
  def shadow_fx(y)
    return @m2.nil? ? @x2 : (y-@n2)/@m2
  end
end
class Spriteset_Map
  include Light_Core
  alias kbl_initialize initialize
  alias kbl_update update
  alias kbl_dispose dispose
  def initialize
    setup_lights
    kbl_initialize
  end
  def update
    kbl_update
    update_lights
  end
  def dispose
    kbl_dispose
    dispose_lights
  end
  def dispose_lights
    $game_map.lantern.dispose
    $game_map.light_sources.each { |source| source.dispose_light }
    $game_map.light_surface.bitmap.dispose
    $game_map.light_surface.dispose
    $game_map.light_surface = nil
  end
  def update_lights
    $game_map.light_surface.bitmap.clear
    $game_map.light_surface.bitmap.fill_rect(0,0,544,416,$game_map.effect_surface.color)
    $game_map.light_sources.each { |source| source.draw_light }
    return unless $game_map.lantern.visible
    @btr = $game_map.lantern.get_graphic
    x = $game_map.lantern.x
    y = $game_map.lantern.y
    r = $game_map.lantern.range
    sx = x + r
    sy = y + r
    dr = r*2
    $game_map.surfaces.each { |s| s.render_shadow(x,y,sx,sy,r,@btr) if s.visible?(sx,sy) && s.within?(x,x+dr,y,y+dr) }
    $game_map.light_surface.bitmap.blt($game_map.lantern.sx,$game_map.lantern.sy,@btr,Rect.new(0,0,dr,dr),$game_map.lantern.opacity)
  end
  def setup_lights
    @btr = nil
    $game_map.lantern.restore
    $game_map.light_sources.each { |source| source.restore_light }
    $game_map.light_surface = Sprite.new
    $game_map.light_surface.bitmap = Bitmap.new(544,416)
    $game_map.light_surface.bitmap.fill_rect(0,0,544,416,$game_map.effect_surface.color)
    $game_map.light_surface.blend_type = 2
    $game_map.light_surface.opacity = $game_map.effect_surface.alpha
    $game_map.light_surface.z = Surface_Z
  end
end


Lorsque l'un ou l'autre n'est pas activé, la touche d'action marche. Alors une fois de plus, je ne sais pas d'où ça vient...:triste2

Posté dans Forum - Bazar des créations !

Ayop - posté le 11/02/2013 à 14:20:27. (847 messages postés)

mil a dit:


Nop razok s'plutot cool je trouve. ^^


Ouep, je trouve que tu as un trait qui rend tes dessins plutôt dynamiques.

Posté dans Forum - [BD] Guêpe-Ride! [MAJ 11/01/2020-Tomes 1 et 2 dispo]

Ayop - posté le 10/02/2013 à 20:54:04. (847 messages postés)

Ephy a dit:


Bonne idée la reine qui brise la séparation des cases ;)


Oui. Ça m'a fait penser à Gotlib avec sa Rubrique-à-Brac sur les animaux (notamment les girafes).^^

Posté dans Forum - Les jeux que vous attendez pour 2013-2014

Ayop - posté le 07/02/2013 à 19:22:10. (847 messages postés)

Je viens de recevoir DeadSpace 3. Je suis baisé, le jeu ne se joue en coop que online. C'est du caca.:leure2

Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 06/02/2013 à 16:57:00. (847 messages postés)

La dernière m'a fais bien rire.^^

Posté dans Forum - Les jeux que vous attendez pour 2013-2014

Ayop - posté le 05/02/2013 à 18:41:31. (847 messages postés)

Ouais vous en abusez un peu là.^^
D'après moi, DeadSpace 2 était pas beaucoup plus orienté action que le premier. Il avait des scènes plus impressionnantes, quelques passages avec plus de monstres et un lieu un peu moins glauque que l'Ishimura, mais ça en faisait pas un jeu d'action pour autant. Ça reste un très bon survival.
Pour DeadSpace 3, je pense que ce sera pareil. C'est pas parce qu'il y a un mode coop et un système d'atelier (= de craft?) qu'on peut le considérer comme un pur jeu d'action.

Après on peut polémiquer tant qu'on veut sur l'orientation que prend le jeu, mais si il n'évoluait pas d'un poil d'un épisode à l'autre, le résultat serait sans doute beaucoup plus critiqué.
Je préfère un jeu qui essaye d'aller plus loin mais qui se casse la gueule plutôt qu'un jeu qui se contente de rester sur des acquis sans jamais prendre de risque d'une suite à l'autre.

Posté dans Forum - Le retour des débilités du net.

Ayop - posté le 05/02/2013 à 15:51:36. (847 messages postés)

Ddken a dit:





Puissante la langue de la lionne vers 1:14.^^

EDIT : Plutôt énorme ça :



Posté dans Forum - Les jeux que vous attendez pour 2013-2014

Ayop - posté le 05/02/2013 à 15:44:32. (847 messages postés)

Le test de JV.com vient de paraitre. Y a pas mal d'amélioration de contenu par rapport aux deux premiers opus, mais apparemment tout ne serait pas adapté au genre. Après, je me ferais mon propre avis là dessus, je préfère ne pas trop me fier à leurs tests. Peut être que ça va rajouter un bon gros plus, mais peut être aussi que ça va déséquilibrer le jeu et que ça va trancher dans l'immersion. Je verrai bien.

Par contre d'après eux, le mode coop est très bien pensé et rajoute vraiment au jeu. Si c'est le cas, c'est une bonne chose puisque je compte me le faire avec mon frère qui n'est pas trop fan, et qui j’espère, kiffera assez cet épisode avec ses nouveaux systèmes pour aller jusqu'au bout de l'aventure. Youpi youpla.

Aussi, les premiers chapitres se passent dans l'espace apparemment, à l'ancienne quoi ! C'est une bonne nouvelle d'après moi. Ahah ! :D

Aller à la page: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers