Hi everyone ! I'm not sure to post in the right section, but well, I hope I'll find someone to awnser me. I'd like to know how exactly works the random hits of Desperado depending on the distance between the GS and his "target". If it can help, I'm playing with the pre-re version and mainly reading the files in the trunk part (and in the src/map/skill.c). All I found about the splash area with random number of hit of Desperado is : [the bold & blue parts are about what, imo, help to understand the way the area of effect and the random and repeated damage part are working]
1) skill_db.txt
What is written : 516,0,8,4,-1,0x2,3,10,1,no,0,0,0,weapon,0,0x0, GS_DESPERADO,Desperado What I understand : id 516 --> Skill n°516 Range 0 --> Melee (with range 0) Hit 8 --> repeated hitting inf 4 --> self element -1 --> use weapon element nk 0x2 --> Has splash area splash 3 --> 7x7 area (3 square around us) max 10 --> Max lvl 10 list_num 1 --> When it hits, it hits once castcancel no --> Cannot be interrupted cast_defense_rate 0 --> Our DEF is not reduced for the duration of the skill inf2 0 --> Nothing specific here maxcount 0 --> No limit of stacking on the same squares skill_type weapon --> weapon-type attack blow_count 0 --> It does not knockback inf3 0x0 --> Nothing specific here name GS_DESPERADO description Desperado
2) skill_unit_db
What is written : 516,0x86, , 3, 0, 100,enemy, 0x000 //GS_DESPERADO What I understand from it : id 516 --> Skill n°516 Unit ID 0x86 --> ??? Nothing's written about it in the file and I'd like to understand this one Unit ID 2 *empty* --> ??? Nothing's written about it in the file Layout 3 --> 7x7 Area Range 0 --> No Range (automatically casted with the Gunslinger as center of the area) Interval 100 --> ??? Nothing's written about it but I assume it's the number of milliseconds between each potential attack, knowing the skill is active for 1sec and may hit until 10 times, so 1 chance to hit every 0,1s Target enemy --> The area affects ennemies Flag 0x000 --> ??? I assume it's nothing specific
3) skill_cast_db
What is written : //-- GS_DESPERADO 516,0,1000,1000,1000,0,0 What I understand : SkillID 516 --> Skill n°516 CastingTime 0 --> No Cast AfterCastActDelay 1000 --> 1sec ACD (After Cast Delay) AfterCastWalkDelay 1000 --> Cannot move for 1sec when the skill is used. Duration1 1000 --> The area of effect remains for 1second (important with the "Interval 100" seen previously in skill_unit_db to explain the maximum 10 hits). Duration2 0 --> Cool Down 0 --> No Cooldown, so limited only by ACD and ASPD (if ASPD < ACD) 4) skill.c : the part I dont succeed to understand but which I think is the solution It's in this part : // Set skill unit limit = group->limit; for( i = 0; i < layout->count; i++ ) { struct skill_unit *unit; int ux = x + layout->dx; int uy = y + layout->dy; int unit_val1 = skill_lv; int unit_val2 = 0; int alive = 1; // are the coordinates out of range? if( ux <= 0 || uy <= 0 || ux >= map[src->m].xs || uy >= map[src->m].ys ){ continue; } if( !group->state.song_dance && !map_getcell(src->m,ux,uy,CELL_CHKREACH) ) continue; // don't place skill units on walls (except for songs/dances/encores) if( battle_config.skill_wall_check && unit_flag&UF_PATHCHECK && !path_search_long(NULL,src->m,ux,uy,x,y,CELL_CHKWALL) ) continue; // no path between cell and center of casting. switch( skill_id ) { // HP for Skill unit that can be damaged, see also skill_unit_ondamaged case GS_DESPERADO: unit_val1 = abs(layout->dx); unit_val2 = abs(layout->dy); if (unit_val1 < 2 || unit_val2 < 2) { //Nearby cross, linear decrease with no diagonals if (unit_val2 > unit_val1) unit_val1 = unit_val2; if (unit_val1) unit_val1--; unit_val1 = 36 -12*unit_val1; } else //Diagonal edges unit_val1 = 28 -4*unit_val1 -4*unit_val2; if (unit_val1 < 1) unit_val1 = 1; unit_val2 = 0; break; And further in the same file but in another part which is too long to quote imo : case GS_DESPERADO: if (rnd()%100 < unit->val1) skill_attack(BF_WEAPON,ss,&unit->bl,bl,sg->skill_id,sg->skill_lv,tick,0); I don't get if it really helps to understand how does Desperado chances to hit works, and how it works depending on the range. I hope someone will be able to explain me how to understand this unique skill and how it works please, and don't hesitate to tell me if I forgot to show some other part which could help to explain how the skill works. By the way, I found in skill.conf (in trunk/conf/battle/skill.conf) a line where is written : // Can't place unlimited land skills at the same time (Note 3) land_skill_limit: 9 Does it mean that if in a precast, behind a Loki, I have 3 Gunslingers with 190ASPD and affected by Bragi, so 5 Desperado per seconds, we can't have more than 9 Desperado's area of effect at the same time instead of 15 ? Or it's just that we can't have more than 9 hits simultaneously on the same square on the same target ? or something else? Thank you for every awnsers which could help to me to understand all those mecanics. And sorry for my english, it's not my native language and I hope each line I wrote are not gouging your eyes out !