Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented Star Emperor and Soul Reaper classes #4386

Merged
merged 27 commits into from Mar 24, 2020

Conversation

aleos89
Copy link
Contributor

@aleos89 aleos89 commented Oct 2, 2019

  • Addressed Issue(s): N/A

  • Server Mode: Renewal

  • Description of Pull Request:

* Initial implementation of these two classes.
Thanks to @Rytech2, @Mateuus, and @nubspixel!
src/map/skill.cpp Outdated Show resolved Hide resolved
* Fixed Book of Creating Star not doing any damage.
* Removed an extra break.
Thanks to @exneval, @idamonli, and @hotspicy945!
idamonli
Copy link

@idamonli idamonli commented on 7e2fe1a Oct 5, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sce->val2: ID or tick???

idamonli
Copy link

@idamonli idamonli commented on 7e2fe1a Oct 5, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The key to the problem is "val2"

aleos89
Copy link
Contributor Author

@aleos89 aleos89 commented on 7e2fe1a Oct 7, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These values are correct, not sure what you're implying. The source object ID (caster) is passed through val2.

hotspicy945
Copy link

@hotspicy945 hotspicy945 commented on 7e2fe1a Oct 7, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But in this commit(7e2fe1a) still no damage.

I test player at "prontera" & print value.

sce->val2 always 90
star_caster->m = other map
bl->m = prontera

And I found in
status.cpp
val2 = 90; // Move speed reduction

Maybe the star_caster = map_id2bl(sce->val2) found wrong data?

src/map/status.cpp Outdated Show resolved Hide resolved
aleos89 added 2 commits Oct 7, 2019
* Cleaned up skill database names.
* Cleaned up max job level checks.
* Corrected Purification of Sun, Moon and Star to no longer adjust ASPD, just the view distance.
* Corrected Book of Creating Star movement speed adjustment value overwriting caster data.
Thanks to @idamonli and @hotspicy945!
src/map/skill.cpp Outdated Show resolved Hide resolved
* Book of Dimension combined with Advent of the Star Emperor should give two defensive shields equal the the caster's max SP.
Thanks to @hotspicy945!
ecdarreola
Copy link

@ecdarreola ecdarreola commented on 422967f Oct 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the normal behavior of casting this skill when being hit by a player? Should the skill SJ_STAREMPEROR continue the animation or should it not?

aleos89
Copy link
Contributor Author

@aleos89 aleos89 commented on 422967f Oct 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m not sure. I haven’t played either of these classes yet, I’m just going off of info given to me so far. I saw 3CeAM uses the Millennium Shield effect.

ecdarreola
Copy link

@ecdarreola ecdarreola commented on 422967f Oct 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Saw that also.

There's a weird behavior on the skill SJ_STAREMPEROR wherein if you cast it and got hit, the animation continues and then your character disappear on screen for a period of time.

While not appearing on screen, you can still walk normally and cast skills normally.

And after a period of time, your character reappears on the screen like nothing happened.

Not sure if this is an official behavior though. Hehehe.

@Balferian
Copy link
Contributor

@Balferian Balferian commented Oct 9, 2019

Need to fix SG_DEVIL status:
Now if SG_DEVIL = 10 lvl aspd up to 193.
It should working like a SCB_ASPD bonus and give 11% at 10 skill lv.
[SKID.SG_DEVIL] = {
"태양과 달과 별의 악마",
"MAX Lv : 10",
"^777777습득조건 : 잡레벨 50^000000",
"계열 : ^777777패시브^000000",
"내용 : ^777777잡렙50이 됐을때만 발동하는 패시브 스킬입니다.",
"자신의 시력을 영원히 희생하는 대신에 공속을 향상시킵니다.",
"시력이 상실되면 주변이 안보여서 불편하니 가능하면 않찍는걸 권장합니다.^000000",
" [Lv 1] ^777777공속 2% 향상^000000",
" [Lv 2] ^777777공속 3% 향상^000000",
" [Lv 3] ^777777공속 4% 향상^000000",
" [Lv 4] ^777777공속 5% 향상^000000",
" [Lv 5] ^777777공속 6% 향상^000000",
" [Lv 6] ^777777공속 7% 향상^000000",
" [Lv 7] ^777777공속 8% 향상^000000",
" [Lv 8] ^777777공속 9% 향상^000000",
" [Lv 9] ^777777공속 10% 향상^000000",
"[Lv 10] ^777777공속 11% 향상^000000"
},
Tested on kRo.
AGI = 1
image

AGI = 99
image

Update:
moved to another issue #4402

@voyfmyuh
Copy link

@voyfmyuh voyfmyuh commented Oct 10, 2019

Star Emperor and Soul Reaper can be equipped with 3rd job equipment such as Temporal Dex Boots

@RadianFord
Copy link
Contributor

@RadianFord RadianFord commented Oct 10, 2019

@aleos89 what client does these classes supports?

@ghost
Copy link

@ghost ghost commented Oct 10, 2019

@RadianFord New classes are available in 2017+ client. (Recommended : 2018-06-20+)

@RadianFord
Copy link
Contributor

@RadianFord RadianFord commented Oct 10, 2019

@RadianFord New classes are available in 2017+ client. (Recommended : 2018-06-20+)

Thanks! I'll just wait until its merged into the master repo.

src/map/status.cpp Show resolved Hide resolved
aleos89 added 2 commits Oct 11, 2019
* After 7 attacks the hidden state should be removed.
* Added missing 1 SP / second drain.
* Casting the skill a second time will cancel the hidden state.
* General cleanups.
Thanks to @hotspicy945!
src/map/battle.cpp Show resolved Hide resolved
@sader1992
Copy link
Contributor

@sader1992 sader1992 commented Nov 22, 2019

According to divine-pride
https://www.divine-pride.net/database/skill/2585
The enemies in the air can not attack or move
not sure but i think it means cannot cast skills while in SC_GRAVITYCONTROL

also in the korean text version in divine-pride
허공에 뜬 적은 공격 및 이동을 할 수 없으며, 데미지 및 상태이상에 면역상태가 된다.
Enemies in the air cannot attack or move, Become immune to damage and abnormalities. (According to google translate)

right now you can use skills and get attacked while in the skill in this pr

@attackjom
Copy link
Contributor

@attackjom attackjom commented Nov 26, 2019

need to update t_tickime to tick_time in status.cpp

@admkakaroto
Copy link
Contributor

@admkakaroto admkakaroto commented Nov 28, 2019

crash:

Program terminated with signal 11, Segmentation fault.
#0  0x0000000000613c80 in status_change_timer (tid=<optimized out>, tick=290410965,
    id=<optimized out>, data=725) at status.cpp:13965
13965                           if (!check_distance_bl(bl, unity_src, 11))
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.6.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_6.x86_64 libcom_err-1.42.9-13.el7.x86_64 libgcc-4.8.5-36.el7_6.2.x86_64 libselinux-2.5-14.1.el7.x86_64 libstdc++-4.8.5-36.el7_6.2.x86_64 mariadb-libs-5.5.60-1.el7_5.x86_64 openssl-libs-1.0.2k-16.el7_6.1.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt full
#0  0x0000000000613c80 in status_change_timer (tid=<optimized out>, tick=290410965,
    id=<optimized out>, data=725) at status.cpp:13965
        unity_src = 0x0
        dounlock = false
        sc = 0x83b2600
        sce = 0x8118138
        type = SC_SOULUNITY
        sd = 0x83b2030
        interval = 0
        status = 0x83b2594
        __FUNCTION__ = "status_change_timer"
        bl = 0x83b2030
        sc_timer_next = {<std::_Maybe_unary_or_binary_function<void, long>> = {<std::unary_function<long, void>> = {<No data fields>}, <No data fields>}, <std::_Function_base> = {
            static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {
                _M_object = 0x9c9eed0, _M_const_object = 0x9c9eed0,
                _M_function_pointer = 0x9c9eed0,
                _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x9c9eed0, this adjustment 6488765},
              _M_pod_data = "\320\356\311\t\000\000\000\000\275\002c\000\000\000\000"},
            _M_manager = 0x5f2330 <std::_Function_base::_Base_manager<status_change_timer(int, t_tick, int, intptr_t)::__lambda0>::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>},
          _M_invoker = 0x5f1120 <std::_Function_handler<void(long int), status_change_timer(int, t_tick, int, intptr_t)::__lambda0>::_M_invoke(const std::_Any_data &, long)>}
#1  0x00000000006311b2 in do_timer (tick=<optimized out>) at timer.cpp:374
        tid = 4463
        diff = <optimized out>
        do_timer(long)::__FUNCTION__ = "do_timer"
#2  0x0000000000407645 in main (argc=1, argv=0x7ffee8285aa8) at core.cpp:368
        next = <optimized out>
(gdb)

* Added a couple checks to prevent map server crashes.
* Cleaned up target check to map session data for tidiness.
* Moved skill_lv to val1 in the status change to abide with standard.
Thanks to @admkakaroto!
nubspixel
Copy link

@nubspixel nubspixel commented on 6e198e7 Dec 3, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

src->m
the src is undefined. pretty sure you meant
if (!unity_src || status_isdead(unity_src) || unity_src->m != bl->m || !check_distance_bl(bl, unity_src, 11))

@Daegaladh
Copy link
Member

@Daegaladh Daegaladh commented Dec 7, 2019

HP/SP tables still missing, is there any source we could use? Or should we uses SG & SL's as placeholders?

@sinju92
Copy link

@sinju92 sinju92 commented Jan 20, 2020

player inside gravity control still can get damage
its should be immune form any attack

aleos89 added 2 commits Jan 20, 2020
* All damage should be blocked by the status.
* Condition changes should be blocked by the status. Need to confirm if it's all or a specific list.
* Cleaned up no skill cast and no movement to use SCS_NOCAST and SCS_NOMOVE.
Thanks to @cahya1992!
Copy link

@sinju92 sinju92 left a comment

already tested it everything it's okay :D

@RagnaWay

This comment was marked as spam.

@xsifthewolf
Copy link

@xsifthewolf xsifthewolf commented Feb 5, 2020

soul reaper skills are not consuming spheres, nor checking for them before casting the skill ! I want to know if it's because of something in my end, I could only compile with windows 10 sdk !

src/map/status.cpp Outdated Show resolved Hide resolved
@Akkarinage Akkarinage added this to Episode 16.2: Terra Gloria in Official Episode Content Feb 13, 2020
@Akkarinage Akkarinage added this to the Official Implementation milestone Feb 13, 2020
@RagnaWay

This comment was marked as spam.

@Tutankhaten
Copy link

@Tutankhaten Tutankhaten commented Mar 10, 2020

the ability of the star emperor is not being saved.
how to reproduce: @allskill quits the game and enters again.

src/map/status.cpp Outdated Show resolved Hide resolved
src/map/skill.cpp Show resolved Hide resolved
@aleos89 aleos89 merged commit 412d900 into master Mar 24, 2020
6 checks passed
@aleos89 aleos89 deleted the feature/star_emperor_soul_reaper branch Mar 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Official Episode Content
Episode 16.2: Terra Gloria
Development

Successfully merging this pull request may close these issues.

None yet