TODO OSPROSE

Welcome in the osRose emulator Project.

Moderators: osRose dev team, ospRose dev team, osiRose dev team, Moderators

TODO OSPROSE

Postby pepu on Sun Aug 31, 2008 6:28 pm

Here is a list of things to do (feel free to add to this list)

  • Poison debuff "SHOWS" the damage, and it shouldn´t
  • AOEs debuffs are not working.(tested with hawker skill)
  • Drill always success and the "Success" or "Fail" Animation doesn´t appear.
  • Fairy doesn't appear.
  • Repairing from NPC Doesn´t work
  • HP is completely bugged
  • We should make a drop system based in stb (original system)*
  • Normal Attack formula isn´t working well, in a normal combat the mob will hit you once 100hp for example, and then u will die (losing 800hp), i think I'll rewrite it again*

Done

  • New NormalAttackFormula.
  • New drop system isn´t neccesary, we need a new drop table.
pepu
ospRose dev team
ospRose dev team
 
Posts: 283
Joined: Mon Feb 04, 2008 10:12 pm
Location: ESPAÑA(Aranjuez)

Re: TODO OSPROSE

Postby XxXshidoXxX on Sun Aug 31, 2008 7:46 pm

We should make a drop system based in stb (original system)


Don't think its usable because the actual Drop stb of na rose 112 is not a good base a lots of drops are fucked up. Purple system is a way better atm .
This stb has been always server side so you can deduce that the 112 one is ... but if you edit it it will be ok . Personally i prefer the way of purple ( more usable )
My collection ( Tools, clients sources...)
https://mega.nz/#F!AdcFnQDL!sKp3O9tWGGdWvLEj_EYfwA
osrose mobile project
viewtopic.php?f=34&t=5787
OsRose Mobile development + Titan Rose redesign
https://github.com/shid0x
XxXshidoXxX
osiRose dev
osiRose dev
 
Posts: 445
Joined: Mon Aug 27, 2007 11:44 am

Re: TODO OSPROSE

Postby Drakia on Sun Aug 31, 2008 10:25 pm

Yeah... the drops STB hasn't changed at all, since the original ROSE release. PY spent ages working on his drop system, I don't see why you'd change it now?
My favorite skill is scaring new users away.
If you haven't SEARCHED expect me to yell at you.
Image
Drakia
ospRose dev team
ospRose dev team
 
Posts: 1614
Joined: Tue Sep 18, 2007 6:53 am
Location: Nanaimo, BC, Canada

Re: TODO OSPROSE

Postby PurpleYouko on Sun Aug 31, 2008 11:02 pm

Normal Attack formula isn´t working well, in a normal combat the mob will hit you once 100hp for example, and then u will die (losing 800hp), i think I'll rewrite it again

Doesn't matter how many times you rewrite the formula. it won't make a bit of difference since the HP stuff (regen, healing and so on) is calculated at the client too.
All we need to do is figure out how to send the data from the server and have the client use that instead of it's own.
Not an easy trick by any means.
As far as the actual formula goes, it's working fine for me. It's the best I have actually seen on any pserver system so let's not mess with it till we figure out the REAL problem. Packet communication.

We should make a drop system based in stb (original system)

The present drop system can handle ANY set of drops you want to put in it.
Just spend your time making the right database drop list. The system itself is just fine.

The other points are well taken.
I will be fixing up the rest of the skill stuff this week (trying to at least)
I've been going through them all bit by bit so the last SVN update is halfway done still.
Pretty much ALL AOE stuff is screwed up still. ;)
Need to lookup information on NARose items, skills, quests?
Now featuring a newly completed skill tree for all classes
Formatting fixed for different resolutions
Image

"A Gazelle is nothing but a giraffe plotted logarithmicaly"
User avatar
PurpleYouko
Rose Guru
Rose Guru
 
Posts: 4733
Joined: Fri Aug 10, 2007 2:05 pm

Re: TODO OSPROSE

Postby pepu on Mon Sep 01, 2008 1:43 am

Well i made a new Normal Attack Formula, test it if you want, is working really well for me.

  1. // do normal attack->Pepu
  2. void CCharacter::NormalAttack( CCharacter* Enemy )
  3. {
  4.     Enemy->OnBeAttacked( this );
  5.     Position->destiny  = Position->current;
  6.  
  7.      //iSuc
  8.     float iSuc = rand() % 180;
  9.     iSuc += ((float(Enemy->Stats->Dodge) * 0.7f) - float(Stats->Accury)) + 1.0f;
  10.     iSuc += 10.0f;
  11.     iSuc *= 0.2f;    
  12.     iSuc -= ((Stats->Level - Enemy->Stats->Level)*0.5);  
  13.        
  14.     //CRITICAL RATE->Pepu
  15.  
  16.     int critRate = 10 * (rand() % 100 + 1);
  17.     critRate = 16 * (critRate + Stats->Level + 30);
  18.     critRate = critRate / (Stats->Critical + 70);  
  19.    
  20.     //hitpower formula ->Pepu    
  21.     long int curDamage = 0;    
  22.     long int hitpower = 0;
  23.     bool critical = false;
  24.    
  25.     if (critRate < 20) critical = true;
  26.     if(IsPlayer( ))
  27.     {
  28.          
  29.          if (Stats->magicattack == 1)
  30.          {
  31.            float tempFloat = ((iSuc * 0.06f) + 29) * (int)Enemy->Stats->Attack_Power;
  32.            tempFloat *= (int)Enemy->Stats->Attack_Power - ((int)Enemy->Stats->Defense * 0.8f) + 350;
  33.            curDamage = (int)(tempFloat / ((((int)Enemy->Stats->Dodge * 0.3f) + (int)Enemy->Stats->Magic_Defense + 5) * 640.0f) + 20);
  34.            curDamage -= 15;
  35.          }
  36.          else
  37.          {
  38.            float tempFloat = ((iSuc * 0.05f) + 25) * (int)Enemy->Stats->Attack_Power;
  39.            tempFloat *= (int)Enemy->Stats->Attack_Power - (int)Enemy->Stats->Defense + 400;
  40.            curDamage = (int)(tempFloat / ((((int)Enemy->Stats->Dodge * 0.4f) + (int)Enemy->Stats->Defense + 5.0f) * 420.0f) + 20);
  41.            curDamage -= 15;
  42.          }      
  43.          if(critRate < 20) curDamage+= Stats->Critical;
  44.     }
  45.  
  46.     if(IsMonster( ))
  47.     {                  
  48.          if (Stats->magicattack == 1)
  49.          {
  50.            float tempFloat = ((iSuc * 0.03f) + 30) * (int)Enemy->Stats->Attack_Power;
  51.            tempFloat *= (int)Enemy->Stats->Attack_Power - ((int)Enemy->Stats->Defense * 0.8f) + 280;
  52.            curDamage = (int)(tempFloat / ((((int)Enemy->Stats->Dodge * 0.3f) + (int)Enemy->Stats->Magic_Defense + 5) * 280.0f));
  53.            curDamage -= 10;
  54.          }
  55.          else
  56.          {
  57.            float tempFloat = ((iSuc * 0.03f) + 26) * (int)Enemy->Stats->Attack_Power;
  58.            tempFloat *= (int)Enemy->Stats->Attack_Power - (int)Enemy->Stats->Defense + 250;
  59.            curDamage = (int)(tempFloat / ((((int)Enemy->Stats->Dodge * 0.4f) + (int)Enemy->Stats->Defense + 5.0f) * 145.0f));
  60.            curDamage -= 10;
  61.          }
  62.          if(critRate < 20) curDamage+= Enemy->Stats->Critical;
  63.          }
  64.  
  65.  
  66.    
  67.     hitpower = (long int)curDamage;
  68.     if(hitpower<=5)
  69.     {
  70.         hitpower = 5;
  71.     }
  72.    
  73.     hitpower = (long int)hitpower + GServer->RandNumber(0,10);
  74.  
  75.    
  76.     // dodge->Pepu
  77.    
  78.     float hitvalue = rand() % 180;
  79.     hitvalue += ((float(Enemy->Stats->Dodge) * 0.7f) - float(Stats->Accury)) + 1.0f;
  80.     hitvalue += 10.0f;
  81.     hitvalue *= 0.2f;    
  82.     hitvalue -= ((Stats->Level - Enemy->Stats->Level)*0.5);
  83.     int hitvalue2 = (int)hitvalue;
  84.    
  85.    
  86.     //unsigned int hitvalue = (unsigned int)floor((double)(Stats->Accury * 100 / Enemy->Stats->Dodge));
  87.     if(hitvalue2>=20)
  88.     hitpower = 0; // dodged
  89.     if (hitpower > 0x7ff)//2047 packet size limit.
  90.     {
  91.        hitpower=0x7ff;        
  92.     }
  93.     if(!Enemy->IsSummon( ) && Enemy->IsMonster( ))
  94.     {
  95.         Enemy->AddDamage( this, hitpower );
  96.         Enemy->damagecounter += hitpower;// is for AI
  97.     }
  98.    
  99.     Enemy->Stats->HP -= hitpower;
  100.     BEGINPACKET( pak, 0x799 );
  101.     ADDWORD    ( pak, clientid );
  102.     ADDWORD    ( pak, Battle->atktarget );
  103. #ifdef USE124
  104.     ADDDWORD   ( pak, hitpower );
  105. #endif
  106.  
  107.     if(Enemy->IsDead())
  108.     {
  109.         CDrop* thisdrop = NULL;
  110. #ifndef USE124
  111.         ADDWORD ( pak, hitpower | KILLBIT | (critical ? CRITBIT: 0));
  112. #else
  113.         ADDDWORD   ( pak, critical?28:16 );
  114. #endif
  115.         if(!Enemy->IsSummon( ) && !Enemy->IsPlayer( ))
  116.         {
  117.             thisdrop = Enemy->GetDrop( );
  118.             if(thisdrop!=NULL)
  119.             {
  120.                 ADDFLOAT   ( pak, thisdrop->pos.x*100 );
  121.                 ADDFLOAT   ( pak, thisdrop->pos.y*100 );
  122.                 if(thisdrop->type==1)
  123.                 {
  124.                     ADDWORD( pak, 0xccdf );
  125.                     ADDDWORD( pak, thisdrop->amount );
  126.                 }
  127.                 else
  128.                 {
  129.                     ADDWORD   ( pak, GServer->BuildItemHead( thisdrop->item ) );
  130.                     ADDDWORD   ( pak, GServer->BuildItemData( thisdrop->item ) );
  131.                 }
  132.                 ADDWORD    ( pak, thisdrop->clientid );
  133.                 ADDWORD    ( pak, thisdrop->owner );
  134.                 CMap* map = GServer->MapList.Index[thisdrop->posMap];
  135.                 map->AddDrop( thisdrop );
  136.             }
  137.         }
  138.         GServer->SendToVisible( &pak, Enemy, thisdrop );
  139.         OnEnemyDie( Enemy );
  140.     }
  141.     else
  142.     {
  143. #ifndef USE124
  144.         ADDWORD   ( pak, hitpower | (hitpower > 0 ? ( critical ? CRITBIT : 0) : 0));
  145. #else
  146.         ADDDWORD   ( pak, (hitpower>0?(critical?12:0):0) );
  147. #endif
  148.         GServer->SendToVisible( &pak, Enemy );
  149.     }
  150.     ReduceABC( );
  151.     Battle->lastAtkTime = clock( );
  152. }



Yes, fighting still buggy, our problem is HP atm.
Change Normal Attack formula didn´t fix anything, however it is better, i think.

PY: why don´t u update Ktrose? hehe :P
pepu
ospRose dev team
ospRose dev team
 
Posts: 283
Joined: Mon Feb 04, 2008 10:12 pm
Location: ESPAÑA(Aranjuez)

Re: TODO OSPROSE

Postby PurpleYouko on Mon Sep 01, 2008 7:30 pm

KTRose is using my very latest code right now.

Note that my code is slightly different than some of the stuff in the SVN.

I have not changed my attack system and i have no intention of doing so. I like it the way it is.
I have also not changed my skill attacks in quite a long time. I will fix it myself when i finish with all the other more complicated crap.
Need to lookup information on NARose items, skills, quests?
Now featuring a newly completed skill tree for all classes
Formatting fixed for different resolutions
Image

"A Gazelle is nothing but a giraffe plotted logarithmicaly"
User avatar
PurpleYouko
Rose Guru
Rose Guru
 
Posts: 4733
Joined: Fri Aug 10, 2007 2:05 pm


Return to Support - OspRose Emulator

Who is online

Users browsing this forum: No registered users and 7 guests