1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

INFO Bug Reports NOV2015a

Discussion in 'Current Patch Discussion' started by Thothie, Nov 23, 2015.

  1. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    $get(MONSTER_ID,skin) always returns 0, even when a monster isn't using 0.
     
  2. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    <censored thingie>
     
  3. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Skin is a client side->pev property, it'd take quite some effort to allow the server to pull the info. However, it always defaults to 0, and can't be set to anything you didn't set it to in the script, so you should always know what it is.

    Related to a potential exploit - the results of which have been fixed, though still need to rework this to figure the core problem.
     
  4. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    I've spent some time on this (mostly trying to figure out how to log vars so I can see what's happening) and narrowed it down to msstring::skip() not working correctly. It happens to work for two of the options, somehow, but fails for the rest, because it returns a malformed string.
     
  5. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    That's... Not good. The script isn't using any string processing, so that must be an issue coming up on the code side of the command. Blarg, probably messing with other things.
     
  6. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    After scanning the scriptcmds in the code, I found that you can use
    Code:
    setvard RENDER_PROPS $get(ent_me,renderprops)
    to get:
    Code:
    pTarget->pev->scale;
    pTarget->pev->rendermode;
    pTarget->pev->renderamt;
    pTarget->pev->body;
    pTarget->pev->skin;
    All in a nice token. So that's kinda neat.

    And it even had you as the author ;P
     
    Last edited: Oct 29, 2017
  7. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    My bad, forgot I rigged that up, and I guess it is available server side... Still, shouldn't need it for that. It's not as if the entity can determine its skin independent of your script. ;)

    It's handier when you're trying to get the properties of a scripted brush that may already have some of those properties set, or when you need to grab the submodel index, and can't be asked to do the math (I'm not even sure what the formula is, off hand). Also, I suppose, if you need to take into account additional parameters that the mapper may have set, though they should all set some variable as well.

    I think the only time I've ever used renderprops was for the flying-monster client-side corpse spawner, as it needed to be sure the client generated corpse would match the renderprops of the server-side creature when it died - not a lotta critters using that feature, so I'm not sure if it's 100% reliable.
     
    greatguys1 likes this.
  8. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    It seems that when using a $func() in events like game_damaged_other, and game_damaged (Probably others but I haven't tested), those events interpret that return as the damage multiplier, as if you used "returndata". A script to show that off real easy:
    Code:
    #scope server
    
    {
        const EXPLOSION_DISTANCE 120
        const EXPLOSION_DAMAGE 100
        const EXPLOSION_DAMAGE_FALLOFF 0.2
        const EXPLOSION_FORCE 300
        const EXPLOSION_TYPE blunt_effect
    }
    
    { game_spawn
    
        name Meshkhar, the Stupid
        hp 8000
        race vermin
        roam 0
        width 32
        height 96
    
        setmodel monsters/sorc.mdl
    }
    
    { game_heardtext
    
        setvard RETURN_VALUE PARAM1
        xdodamage $get(ent_me,origin) EXPLOSION_DISTANCE EXPLOSION_DAMAGE EXPLOSION_DAMAGE_FALLOFF ent_me ent_me none EXPLOSION_TYPE //<target|(src_origin)> <range|aoe|(dest_origin)|direct> <damage> <cth|fall_off> <attacker> <inflciter> <skill|none> <dmg_type> [flag_string]
    }
    
    { game_damaged_other //PARAM1=target_hit PARAM2=dmg PARAM3=dmg_type //items return <attack_callback>_damaged_other
    
        local L_GET_TEXT $func(func_return_said_text)
    
        local L_STR "I will do "
        stradd L_STR L_GET_TEXT
        stradd L_STR " times more damage than 100."
    
        saytext L_STR
    }
    
    { func_return_said_text
    
        return RETURN_VALUE
    }
    
    Just say a number and he'll try to get it via a func. As a result, he'll multiply his damage output.
     
    Last edited: Nov 2, 2017
  9. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Hrmm... Not sure how to fix without adding a new property to the base script system. game_damaged_other and few other hard events use the same returndata property. Workaround would be to use the classic callevent method and set a setvard. $func() is neat, but remember it doesn't actually let you do anything you couldn't do before it was put in place - just makes it easier to conceptualized and organize.
     
  10. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    PS. Bug reports for Kroush should go here as well.
     
  11. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    I understand. I'll probably still use $func(), but just set the returndata back to 1 afterwords. Would this mean though that "return" and "returndata" do the same thing?
     
  12. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Yes, it's an alias for the same command. Potentially dicey that way though - if a global balancer or any such is adjusting the damage, the proper returndata may not be 1. Also could end up with a string in the returndata, and I'm not sure what game_damaged_other would do with that - might overflow into any number, and suddenly the critter could end up hitting for x3238493.3643 damage or some such.
     
  13. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    Don't know what was happening here, but something kept cancelling my rejuvenate at the Thanatos boss arena despite taking no damage.
     
  14. greatguys1

    greatguys1 New Adventurer Developer Warriors of the North

    162
    3
    Apr 20, 2013
    Yes
    If you listen, it happens whenever one of those ice things are shot. Looking in the script, it seems that to determine who to shoot it at, it attempts to deal 0 damage in a large area, then whoever it "hit" it will shoot the projectile at. The rejuvenation spell will cancel even on 0 damage.
    Snip of monsters/skeleton_ice_enraged:
    Code:
    { cast_bolts
    
        if $get(ent_me,isalive)
    
        //callevent BOLT_FREQUENCY cast_bolts
    
        setvard BOLT_CHECKING 0
    
        if !ICE_BLASTING
        if !PLAYING_DEAD
    
        //dbg Checking for Boltables
    
        playanim critcal ANIM_BLAST
    
        setvard ICE_BLASTING 1
        dodamage $relpos(0,0,0) 2048 0 100% 0 reflective //<----- This is where it does 0 damage
    //<target> <range> <dmg> <cth> [type] - swing at target in range (can be obstructed)
        setvard ICE_BLASTING 0
    }
    
    
    
    { game_dodamage //1: Attack Hit (1/0)  2: Entity Attack hit  3:  Start Position  4:  End Position
    
        if ( !ICE_BLASTING )
        {
            if ( !FREEZE_ATTACK )
            {
                if ( ANIM_ATTACK equals ANIM_SMASH )
                {
                    if( $rand(1,4) == 1 ) applyeffectstack PARAM2 effects/effect_frost 5 $get(ent_me,id) $rand(3,5)
                }
            }
        }
    
    
        if ( ICE_BLASTING ) //<----- This is where it shoots the projectile at whoever was "hit" by 0 damage
        {
            if PARAM1
    
            if $get(PARAM2,relationship,ent_me) equals enemy
    
            //dbg Casting Bolt
    
            playsound game.sound.voice 10 SOUND_BOLT
    
            setmovedest PARAM2 9999
    
            tossprojectile PARAM2 500 BOLT_DAMAGE 1 proj_ice_bolt (0,5,50)
        }
    }
     
  15. MS:C community

    MS:C community Adventurer

    337
    12
    Jul 7, 2011
    The (bizarre) reason is: Those pissed off ice skeletons (monsters/skeleton_ice_enraged) somehow pull you out of rejuvenate when they fire a frost bolt. They don't even have to hit you, hell, they don't even have to aim at you.

    Edit: greatguys1 beat me to the punch with a great explanation to boot!

    Edit 2: Pre-NOV2015a, their slower, weaker counterparts (the ice skeletons with the swords) had the same bug.
     
    Last edited: Nov 9, 2017
  16. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    Hmm, obnoxious. It's worth noting I also had full cold immunity. I've had other situations where being attacked by something with full immunity vs. it also interrupts rejuvenate.
     
  17. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    Sword blocking on some weapons seems a bit broken. For example, I tested it with the unholy blade and while holding right click it will say (when i take 60 damage while wearing no armor) Sword Paired! (60 hp) and Unholy blade absorbed 30 damage so I take 30 damage. I tested also with the shadowfire blade, sword parried (60 hp) and i take 30. No damage is taken if you do a regular parry ontop of sword parrying as normal. But with the sword parry shouldnt I be taking 0 damage then, or is the amount portrayed in parenthesis just wrong?
     
  18. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    Wraiths are vulnerable to acid damage.
     
    Last edited: Nov 10, 2017
  19. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Yeeeah, it's very old script - among the first I did I think, before we got the code to compile, thus it predates xdodamage, damage type control, and $get_tsphere. I was thinking we re-did it at some point, but either I'm confusing it with the Lightning Forged Skeleton, or the fix turned out to be buggy and had to be undone.

    Ideally, it'd use $get_tsphere to pick up its targets and then toss projectiles at them. Be even better to move the projectile toss to a client side effect with a ce return, but things would get complicated when you try to decide which client to track it on, especially should the target not be a player. Projectiles aren't as nasty with overhead as monster scripts anyways.

    There's probably a few other scripts using similarly outdated methodology - and more using the "target" damage type for scans. Those types of scans have the advantage that they are automatically blocked by walls and the like (not required in this case, since the projectile would just get blocked), but I think the rejuvenation script is smart enough to ignore "target" damage types.

    2h Sword parry is screwy... It can passively deflect 100% damage, as do shields, and like shields, reduce damage when actively parrying. This defaults to a 50% reduction, the message is just returning the initial damage value instead of the final. Will fix.

    Also will fix. Gettin to be too many damage types - might need something to make sure we don't miss them like that.

    They also take reduced damage from Lightning, though this is intentional, and, of course, normal damage from Dark. I'm boosting the damage they take from Holy slightly while I'm in there, just to make sure that Holy remains the optimal choice.


    PS. Jeeze, I have a mess of badges on my sleeve now... I guess RKS fixed the bit where folks weren't getting their titles proper. Accidentally removed Greatguys1 from the forums trying to do that for the new Warriors of the North guys myself. ><
     
  20. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    The greater minions that maldora summoned at lodagond-4 today seemed to have the visual and sound effect of holy DOT I gave them with my fshard indefinately. Like they took the normal length of damage but then the glow and sound effect kept playing for the remainder of their life.
     
  21. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    One time bugs are tricky to deal with. Game has so many memory errors and other oddities that weird stuff just happens from time to time, such as effects failing to remove.

    If you can reliably reproduce the effect, then I can look into it, but I canna think of what would cause that normally.
     
  22. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    The abyssal worm is really buggy and obnoxious. Aside from the weird hit chance fluctuation he also loves to pop up and hit you before he's played his re-surfacing animations, his claw strikes can attack you from more than halfway across the platform, and would it hurt to have this guy boss flagged?
     
  23. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Been fiddling with him a lot lately, though we seem to have a few bugs to go... Good eye on the boss thing though - hard to believe in all this diving through his script I've always missed that.

    At least he isn't teleporting across the map anymore... It's really tricky to make oddly shaped, oversized, multi-staged mobs like this behave.
     
  24. Kanta

    Kanta Adventurer

    87
    15
    Jan 24, 2013
    Level 45 Zauberei Basher
    ms_swamp
    Flying cloud enemies dont take damage from the fshard holy wave or the following dot. They also dont take the extra damage from the holy lance throw.
     
  25. Thothie

    Thothie Administrator Staff Member Administrator Moderator Developer

    14,679
    17
    Apr 8, 2005
    psycho-oligist
    lost
    Holy Wave might have trouble catching Shadow Forms, since they aren't on the ground. I'll check the lance's DOT - may need to port it to the applyeffect if it's using an old callback.
     

Share This Page