Welcome Guest ( Log In | Register )

45 Pages V « < 27 28 29 30 > »   
Reply to this topicStart new topic
> [Script] Monsterbation 1.4.1.2, A comprehensive hovering script for HentaiVerse and ISK. Including CrunkJuice 1.3.0, an out-of-battle script

 
post Apr 16 2020, 00:03
Post #547
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


QUOTE(federfleisch @ Apr 15 2020, 17:45) *

Set hover action to Attack.

keep in mind that the keyword for the default attack is "Nothing" rather than "Attack", the reasoning being that the hover action is the action performed before the automatic click and doing "Nothing" will perform a simple click, ie. a regular attack

QUOTE(DJNoni @ Apr 15 2020, 19:39) *

However, most scripts won't work with the default font.

this script should be fully functional with the default font

This post has been edited by sickentide: Apr 16 2020, 00:04
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 16 2020, 15:39
Post #548
federfleisch



Newcomer
*
Group: Members
Posts: 26
Joined: 1-November 10
Level 208 (Godslayer)


QUOTE(sickentide @ Apr 16 2020, 00:03) *

keep in mind that the keyword for the default attack is "Nothing" rather than "Attack", the reasoning being that the hover action is the action performed before the automatic click and doing "Nothing" will perform a simple click, ie. a regular attack
this script should be fully functional with the default font

OK that totally tripped me up! The comment in the script next to it I interpreted as meaning I needed to set the action as Attack to enable it. Thanks for clarifying!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 17 2020, 02:57
Post #549
-Kipaliye



Phantasia
****
Group: Gold Star Club
Posts: 285
Joined: 9-August 17
Level 500 (Ponyslayer)


My monsterbation script always stop working after few rounds,sometimes the whole page is just like being frozen, the extend quickbar is gone too. Usually after I reload the page the script will work, but after few rounds it will stop working again. I have tried adjusting the settings or reinstalling the script,but nothing works. Hentaiverse works perfect when monsterbation is not installed.Do you have any ideas to help me solve this problem? Thank you.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 17 2020, 07:05
Post #550
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


QUOTE(RazyNight @ Apr 17 2020, 02:57) *

Do you have any ideas to help me solve this problem?

usually this happens when one of the settings is set to an invalid value, causing the script to crash when that setting is invoked. if you post the console output when it stops working, we should be able to pin this down
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 17 2020, 08:55
Post #551
-Kipaliye



Phantasia
****
Group: Gold Star Club
Posts: 285
Joined: 9-August 17
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 17 2020, 07:05) *

usually this happens when one of the settings is set to an invalid value, causing the script to crash when that setting is invoked. if you post the console output when it stops working, we should be able to pin this down



userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1206 Uncaught TypeError: Cannot read property 'test' of undefined
at Durations (userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1206)
at MutationObserver.Observe (userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1083)
Durations @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1206
Observe @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1083
childList (async)
Battle.process_action @ hvc.js:1
XMLHttpRequest.send (async)
api_call @ hvc.js:1
Battle.touch_and_go @ hvc.js:1
Battle.commit_target @ hvc.js:1
onclick @ ?s=Battle:1
Hover @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1410
Monsters @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1362
Observe @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1084
childList (async)
Battle.process_action @ hvc.js:1
XMLHttpRequest.send (async)
api_call @ hvc.js:1
Battle.touch_and_go @ hvc.js:1
Battle.commit_target @ hvc.js:1
onclick @ ?s=Battle:1
Hover @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1410
Monsters @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1362
Observe @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1084
childList (async)
Battle.process_action @ hvc.js:1
XMLHttpRequest.send (async)
api_call @ hvc.js:1
Battle.touch_and_go @ hvc.js:1
Battle.commit_target @ hvc.js:1
onclick @ ?s=Battle:1
Hover @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1410
Monsters @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1362
Observe @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1084
childList (async)
Battle.process_action @ hvc.js:1
XMLHttpRequest.send (async)
api_call @ hvc.js:1
Battle.touch_and_go @ hvc.js:1
Battle.commit_target @ hvc.js:1
onclick @ ?s=Battle:1
Hover @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1410
Monsters @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1362
Observe @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1084
childList (async)
Battle.process_action @ hvc.js:1
XMLHttpRequest.send (async)
api_call @ hvc.js:1
Battle.touch_and_go @ hvc.js:1
Battle.commit_target @ hvc.js:1
onclick @ ?s=Battle:1
Hover @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1410
eval @ userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1415
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 17 2020, 09:13
Post #552
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


QUOTE(RazyNight @ Apr 17 2020, 08:55) *

Uncaught TypeError: Cannot read property 'test' of undefined
at Durations (userscript.html?id=1462ddad-6a97-42a2-a44f-ee1a0db87432:1206)

looks like the alertBuffs ("critical buffs") setting is broken. make sure that it respects the format given in the defaults. either look at the unmodified script or, if you use the interface, clear the field and save to reset it
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 17 2020, 11:06
Post #553
-Kipaliye



Phantasia
****
Group: Gold Star Club
Posts: 285
Joined: 9-August 17
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 17 2020, 09:13) *

looks like the alertBuffs ("critical buffs") setting is broken. make sure that it respects the format given in the defaults. either look at the unmodified script or, if you use the interface, clear the field and save to reset it


Thanks, it works now.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 24 2020, 00:02
Post #554
okayno



tired of being right all the time
****
Group: Gold Star Club
Posts: 419
Joined: 7-November 11
Level 396 (Dovahkiin)


Went to edit the default imperil binds to stop targeting and just cast imperil, because the chances of all three landing is about 10%, thus, the binds were useless. Save and exit. Monsterbation is unloaded. Hit 1, standard attack on monster A and all icons are arranged vertically with green bars above every buff/debuff icon. Restart firefox, same. Delete monsterbation and install fresh. Same. Reinstall tampermonkey, same. Disable all addons except tampermonkey, same. Monsterbation now only loads properly in a standard window.

What. the. fuck.

Apparently wiping all cookies (??) was the magical problem solver here. Despite the fact none of the cookies retained by the browser were newer than 22 days old. ¯\(o.°)/¯

This post has been edited by okayno: Apr 24 2020, 00:55
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 26 2020, 02:34
Post #555
AtotehZ



Newcomer
**
Group: Members
Posts: 86
Joined: 23-October 10
Level 179 (Destined)


Dunno it it's actually necessary, but in the first post it doesn't give an example of what you can use to execute the script.

I've used both Greasemonkey and Tampermonkey before, but those who haven't touched scripts before might be screwed.

This is awesome by the way. I was annoyed there was no easy way to rebind my casts, now they're all where I want them, and that's just the tip of the new features.

This post has been edited by AtotehZ: Apr 26 2020, 02:36
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 26 2020, 17:42
Post #556
3534



Active Poster
*******
Group: Gold Star Club
Posts: 1,866
Joined: 14-March 11
Level 500 (Ponyslayer)


Hi, sickentide. (IMG:[invalid] style_emoticons/default/smile.gif)

@1.3.2.0
setting:
CODE
turnDividers: true, //         add horizontal row between turns
hoverShiftAction: "Impulse(Cast('Imperil'))", // alternate hover action when holding shift


when I holding shift and hover on the monster, it is not always cast Imperil,
it will become like this, much Arcane Blow and less Imperil:
QUOTE
Ether Tap restores 34 points of magic.
Your spike shield hits Bakorra for 228 points of wind damage.
Bakorra crits you for 1048 slashing damage.
Void Strike hits Bakorra for 2283 void damage.
Elec Strike hits Bakorra for 1865 elec damage.
Arcane Blow hits Bakorra for 3883 void damage.

Your spike shield hits Bakorra for 210 points of wind damage.
Bakorra hits you for 968 slashing damage.
You gain the effect Ether Tap.
Void Strike hits Bakorra for 2027 void damage.
Elec Strike hits Bakorra for 2189 elec damage.
Arcane Blow crits Bakorra for 7105 void damage.

Your spike shield hits Bakorra for 200 points of wind damage.
Bakorra hits you for 921 slashing damage.
Bakorra parries your attack.

Cooldown expired for Cure
Bakorra gains the effect Turbulent Air.
Your spike shield hits Bakorra for 894 points of wind damage.
Bakorra uses Diurnal Butterflies, and crits you for 4120 slashing damage
Your spirit shield absorbs 850 points of damage from the attack into 12 points of spirit damage.
Bakorra gains the effect Coalesced Mana.
Bakorra gains the effect Imperiled.
You cast Imperil.

You evade the attack from Bakorra.
Void Strike hits Bakorra for 1835 void damage.
Elec Strike hits Bakorra for 1793 elec damage.
Arcane Blow crits Bakorra for 5569 void damage.


so I try to read the code,

still @1.3.2.0
setting:
CODE
    turnDividers: true, //         add horizontal row between turns
    clickRight: "Impulse(Cast('Imperil'))",
    hoverShiftAction: "Impulse(Cast('Imperil'))", // alternate hover action when holding shift


code change (just add console.log *5 ):
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        console.log('interruptHover:'+interruptHover);                                                                                                  //add here
        console.log('interruptAlert:'+interruptAlert);                                                                                                     //add here
        console.log('!monsters[target]:'+target+':'+!monsters[target]);                                                                        //add here
        console.log(target+':'+!monsters[target].hasAttribute('onclick'));                  //add here
        console.log('-');                                                                                                                                              //add here
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}


test:
1) right click on the monster A (out of hover area):
CODE
interruptHover:false
interruptAlert:false
!monsters[target]:false:true
Uncaught TypeError: Cannot read property 'hasAttribute' of undefined

no imp no Arcane Blow, nothing happened.

2) refresh and try the "hoverShiftAction", holding shift and hover on the monster B.
CODE
interruptHover:false
interruptAlert:false
!monsters[target]:1:false
1:false
and Arcane Blow hit

go on holding shift and hover on the monster B.
console.log gived nothing,
and imp cast.

go on holding shift and hover on the monster B.
console.log gived nothing,
and Arcane Blow hit.

go on holding shift and hover on the monster B.
console.log gived nothing,
and Arcane Blow hit.

go on holding shift and hover on the monster B.
console.log gived nothing,
and Arcane Blow hit.

...

3) refresh and try the "hoverShiftAction", holding/release shift and hover on the monster B.
CODE
interruptHover:false
interruptAlert:false
!monsters[target]:1:false
1:false
and Arcane Blow hit

release shift

continue on holding shift and hover on the monster B.
console.log gived nothing,
and imp cast.

release shift

continue on holding shift and hover on the monster B.
CODE
interruptHover:false
interruptAlert:false
!monsters[target]:1:false
1:false
and Arcane Blow hit

release shift

continue on holding shift and hover on the monster B.
console.log gived nothing,
and imp cast.

release shift

continue on holding shift and hover on the monster B.
CODE
interruptHover:false
interruptAlert:false
!monsters[target]:1:false
1:false
and Arcane Blow hit

...

..............................................................................................................................

I guess it is ...(?)

1)
target == false
so,
!monsters[target].hasAttribute('onclick')
gived the "Uncaught TypeError"


2)
Script RUN
CODE
document.addEventListener('keydown', handleKeys, true);

push shift
release == false
CODE
handleKeys(e) {...}

hover monster B
CODE
area.addEventListener('mouseover', SetTarget(i), true);

i==1
CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse==false
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }

CODE
cfg.hoverShiftAction();

CODE
hoverShiftAction: "Impulse(Cast('Imperil'))",

done==false
interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') == false
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
impulse == Cast('Imperil')

CODE
Hover() {...
monsters[target].click();}
Arcane Blow hit

next turn
CODE
area.addEventListener('mouseover', SetTarget(i), true);

CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse == Cast('Imperil')
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }

done == true
impulse == false
and imp hit.

next turn
CODE
area.addEventListener('mouseover', SetTarget(i), true);

CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse == false
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }

CODE
cfg.hoverShiftAction();

CODE
hoverShiftAction: "Impulse(Cast('Imperil'))",

done == true
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}

CODE
Hover() {...
monsters[target].click();}
Arcane Blow hit

next turn
impulse == false
done == true
like the last turn, Arcane Blow hit
...

3)
Script RUN
as same as 2) first turn
CODE
document.addEventListener('keydown', handleKeys, true);

push shift
release == false
CODE
handleKeys(e) {...}

hover monster B
CODE
area.addEventListener('mouseover', SetTarget(i), true);

i==1
CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse==false
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }

CODE
cfg.hoverShiftAction();

CODE
hoverShiftAction: "Impulse(Cast('Imperil'))",

done==false
interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') == false
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
impulse == Cast('Imperil')

CODE
Hover() {...
monsters[target].click();}
Arcane Blow hit

next turn
CODE
document.addEventListener('keyup', handleKeyup, true);

release shift
CODE
function handleKeyup(e) {
    shiftHeld = e.shiftKey;
    ctrlHeld = e.ctrlKey;
    altHeld = e.altKey;
    override = false;
    release = true;
    if ( cfg.hoverAutoresume ) {
        interruptHover = false;
        if ( (cfg.hoverAction || override) && !interruptAlert && monsters[target] && monsters[target].hasAttribute('onclick') ) {
            Hover(); }}
}
release == true
push shift and hover
CODE
document.addEventListener('keydown', handleKeys, true);

CODE
function handleKeys(e) {
    if ( release ) {
        done = false;
        release = false; }
    saveKeyDown();
    shiftHeld = e.shiftKey;
    ctrlHeld = e.ctrlKey;
    altHeld = e.altKey;
    var bind;
    for ( var i = 0; i < bindings.length; i++ ) {
        bind = bindings[i];
        if ( e.keyCode == bind.keyCode && bind.modifier(e) ) {
            bind.action();
            return; }}
    loadKeyDown(); }
done == false
release == false
CODE
area.addEventListener('mouseover', SetTarget(i), true);

CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse == Cast('Imperil')
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }
done == true
impulse == false
and imp hit.

next turn
CODE
document.addEventListener('keyup', handleKeyup, true);

release shift
CODE
function handleKeyup(e) {
    shiftHeld = e.shiftKey;
    ctrlHeld = e.ctrlKey;
    altHeld = e.altKey;
    override = false;
    release = true;
    if ( cfg.hoverAutoresume ) {
        interruptHover = false;
        if ( (cfg.hoverAction || override) && !interruptAlert && monsters[target] && monsters[target].hasAttribute('onclick') ) {
            Hover(); }}
}
release == true
push shift and hover
CODE
document.addEventListener('keydown', handleKeys, true);

CODE
function handleKeys(e) {
    if ( release ) {
        done = false;
        release = false; }
    saveKeyDown();
    shiftHeld = e.shiftKey;
    ctrlHeld = e.ctrlKey;
    altHeld = e.altKey;
    var bind;
    for ( var i = 0; i < bindings.length; i++ ) {
        bind = bindings[i];
        if ( e.keyCode == bind.keyCode && bind.modifier(e) ) {
            bind.action();
            return; }}
    loadKeyDown(); }
done == false
release == false
CODE
area.addEventListener('mouseover', SetTarget(i), true);

CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

impulse == false
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    else if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    monsters[target].click(); }

CODE
cfg.hoverShiftAction();

CODE
hoverShiftAction: "Impulse(Cast('Imperil'))",

done==false
interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') == false
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
impulse == Cast('Imperil')

CODE
Hover() {...
monsters[target].click();}
Arcane Blow hit

next turn
like the last imp turn, imp hit
...

*****************

is it a bug?
or I make something bad?
(IMG:[invalid] style_emoticons/default/unsure.gif)

This post has been edited by 3534: Apr 27 2020, 09:24
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 28 2020, 03:47
Post #557
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


QUOTE(okayno @ Apr 24 2020, 00:02) *

Apparently wiping all cookies (??) was the magical problem solver here. Despite the fact none of the cookies retained by the browser were newer than 22 days old. ¯\(o.°)/¯

looks like your binds were broken, causing the script to crash. clearing cookies fixes that, or hitting Reset on the settings page

QUOTE(AtotehZ @ Apr 26 2020, 02:34) *

Dunno it it's actually necessary, but in the first post it doesn't give an example of what you can use to execute the script.

true, fixed

QUOTE(3534 @ Apr 26 2020, 17:42) *

CODE
turnDividers: true, //         add horizontal row between turns
hoverShiftAction: "Impulse(Cast('Imperil'))", // alternate hover action when holding shift

is it a bug?
or I make something bad?

i'm not sure what you're trying to do, but when i test your settings, they work as intended: casting imperil exactly once per keypress. if you want to use imperil continuously, you need to use Cast('Imperil') without the Impulse
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 28 2020, 09:24
Post #558
Noni



Hataraku Noni-sama
***********
Group: Catgirl Camarilla
Posts: 13,503
Joined: 19-February 16
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 28 2020, 03:47) *

looks like your binds were broken, causing the script to crash. clearing cookies fixes that, or hitting Reset on the settings page
true, fixed
i'm not sure what you're trying to do, but when i test your settings, they work as intended: casting imperil exactly once per keypress. if you want to use imperil continuously, you need to use Cast('Imperil') without the Impulse

yo sicken, I tried the impulse function to cast imperil at start of round of schoolgirls:



start round with over is ON
CODE

   hoverAltAction: Impulse(Cast('Imperil')), // alternate hover action when holding alt


Then I have the mouse outside the hover area at beginning of round. I press alt, keep it down. I move the mouse to monsters: presto!
1. I use arcane blow (?!) and deal void damage by whacking the monster over his head
2. I cast imperil

Wut? why the arcane blow?

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 28 2020, 09:43
Post #559
uareader



Critter
*********
Group: Catgirl Camarilla
Posts: 5,594
Joined: 1-September 14
Level 500 (Ponyslayer)


If I understand right:
-Impulse allow to do the action once per keypress.
-Alternative hover allow to do an alternative action when key holding

There may be an incompatibility between the two
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 28 2020, 11:33
Post #560
3534



Active Poster
*******
Group: Gold Star Club
Posts: 1,866
Joined: 14-March 11
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 28 2020, 09:47) *

i'm not sure what you're trying to do, but when i test your settings, they work as intended: casting imperil exactly once per keypress. if you want to use imperil continuously, you need to use Cast('Imperil') without the Impulse

I knew if I want to use imperil continuously, need to use Cast('Imperil') without the Impulse,
but that is not my mean.
(IMG:[invalid] style_emoticons/default/unsure.gif)


let me try to tell clear what I did:
1) clean the "local storage"
2) setup 1.3.2.0, and only change these at the code, others are all same as original script
CODE
// @match        https://*.hentaiverse.org/*
turnDividers: true, //         add horizontal row between turns
hoverShiftAction: "Impulse(Cast('Imperil'))", // alternate hover action when holding shift

3) enter GF
4) my operation and what happend:
[a] when I enter GF, mouse is outside the hover area, nothing happend, I think it's normal
[b.] push "shift" and holding it
[c] mouse go in the hover area, with still holding "shift"
[e] first turn, Arcane Blow hit. (mouse still in the hover area, with still holding "shift")
[f] no stop, second turn, imp hit. (mouse still in the hover area, with still holding "shift")
[g] no stop, third turn, Arcane Blow hit. (mouse still in the hover area, with still holding "shift")
[h] no stop, fourth turn, Arcane Blow hit. (mouse still in the hover area, with still holding "shift")
...
[i] mouse go out of the hover area, release "shift"


another operation and what happend:
[a] when I enter GF, mouse is outside the hover area, nothing happend, I think it's normal
[b.] push "shift" and holding it
[c] mouse go in the hover area, with still holding "shift", but this time, mouse go out of the hover area at once.(move in and move out very quickly)
[e] first turn, Arcane Blow hit. (with still holding "shift")
[f] release "shift"
[g] push "shift" and holding it
[h] like [c], mouse move in and move out very quickly, with still holding "shift"
[i] second turn, imp hit. (with still holding "shift")
[j] release "shift"
[k] push "shift" and holding it
[l] like [c], mouse move in and move out very quickly, with still holding "shift"
[m] third turn, Arcane Blow hit.
[n] release "shift"
[o] push "shift" and holding it
[p] like [c], mouse move in and move out very quickly, with still holding "shift"
[q] fourth turn, imp hit. (with still holding "shift")
[r] release "shift"
...


I think it is not work as intended,
and it may should be:
[a] when I enter GF, mouse is outside the hover area, nothing happend
[b.] push "shift" and holding it
[c] mouse go in the hover area, with still holding "shift"
[e] first turn, imp hit. (mouse still in the hover area, with still holding "shift")
[f] action stop (mouse still in the hover area, with still holding "shift")
[g] mouse go out of the hover area (still holding "shift")
[h] mouse go in the hover area, with still holding "shift"
[i] second turn, imp hit. (mouse still in the hover area, with still holding "shift")
[j] action stop (mouse still in the hover area, with still holding "shift")
[k] mouse go out of the hover area (still holding "shift")
[l] mouse go in the hover area, with still holding "shift"
[m] third turn, imp hit. (mouse still in the hover area, with still holding "shift")
[n] action stop (mouse still in the hover area, with still holding "shift")
[o] mouse go out of the hover area (still holding "shift")
...
[p] mouse go out of the hover area, release "shift"

maybe a little look like use "onmouseenter" instead of "onmouseover"...?
addEventListener('mouseenter', function)
addEventListener('mouseover', function)


Due to I don't know the rules very well, maybe this usage is not allowed?
(IMG:[invalid] style_emoticons/default/unsure.gif)






***********************************************************************

and in my last post,
QUOTE(3534 @ Apr 26 2020, 23:42) *

Hi, sickentide. (IMG:[invalid] style_emoticons/default/smile.gif)

@1.3.2.0
setting:
...
I am trying to guess the reason of what happened in the code, so I add some 'console.log' and test.

and I think that here, there is a little strange,
actually, I am not very understand the code meaning at here (IMG:[invalid] style_emoticons/default/heh.gif)
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
here it is:
CODE
( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') )



first,
due to
CODE
startRoundWithHover: true, //    have hoverplay active at the beginning of each round
interruptHover = !cfg.startRoundWithHover;

"interruptHover" most of time is "false".

and "interruptAlert" is meaning the sparked or low vitals or something danger,
so, "interruptAlert" most of time is "false", too.

and then,
"!monsters[target]"
"!monsters[target].hasAttribute('onclick')"
these two is influence by "target",
and due to
CODE
function ClearTarget() { target = false; }

CODE
var cfg = {}, profile = JSON.parse(localStorage.HVmbp || '{ "p":0,"s1":0,"s2":0,"s3":0,"s4":0,"s5":0,"s6":0,"s7":0,"s8":0,"s9":0 }'),
    bindings = [], gem = [], target = false, cursor = -1, interruptHover, interruptAlert = false, hovering = false, override = false, impulse = false,

CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

CODE
function Disengage() { target = false; override = false; }

when "target" is "false", the "!monsters[target]" is "true", "!monsters[target].hasAttribute('onclick')" will be error.

CODE
( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') )
it become
CODE
( false || false || true || error )
though there is an "error", it still mean "true".

and then
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
here, most of time RUN
CODE
action(); done = true; impulse = false;


continue to track,
if "target" need to be something but not "false",
here it is:
CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}
yeah, here:
CODE
target = i;


and the "SetTarget(i)" will run in those 3 places:
(1)
CODE
function CursorHover() { if ( cursor >= 0 ) SetTarget(cursor)(); }
this is used by bind(), like that
CODE
// Bind(KEY_RIGHT, CursorHover);\ -- Hover on selected monster, recommended use with clearRound = true.



(2)
CODE
function BarEngage(i, actions) {
    return function() {
        if ( !monsters[i].hasAttribute('onclick') ) return;
        override = StrongestBar(actions);
        SetTarget(i)(); };}
this is used by MonsterBar(), like that
CODE
    // mobile settings
    clearRound: false, // clear target and reset hoverAction at round transition, to avoid lingering taps and make monsterBar safer
    spacedBar: false, //  increase spacing of quickbar and monster bar
    monsterBar: [], //    add skill/spell icons next to monsters, for single use or tap to engage/tap elsewhere to disengage, single skills and spell rotations



(3)
CODE
function Monsters() {
    var monster;
    for ( var i = 0; i < monsters.length; i++ ) {
        if ( (monster = monsters[i]) && monster.hasAttribute('onclick') ) {
            var area = monster.querySelector('.btm' + cfg.hoverArea) || monster;
            area.addEventListener('mouseout', ClearTarget, true);
            area.addEventListener('mouseover', SetTarget(i), true);
            monster.addEventListener('mousedown', HandleClick(i), true);
            monster.addEventListener('contextmenu', function(e) { e.preventDefault(); });
            monster.addEventListener('wheel', HandleWheel(i), true);
            if ( cursor >= 0 ) Cursor();
            if ( target === i && (cfg.hoverAction || override) && !interruptHover && !interruptAlert ) {
                Hover(); }
            if ( cfg.submitScans && monsterData.recent[i] === false ) {
                monster.querySelector('.btm2').style.background = cfg.colours.scan; }
            else if ( cfg.monsterKeywords && monsterData.highlight[i] ) {
                monster.querySelector('.btm2').style.background = cfg.colours.monster; }
            if ( (cfg.showMonsterHP || cfg.shortenHPbars) && monsterData.hp[i] ) {
                var bar = monster.querySelector('img[src$="nbargreen.png"]'),
                    ratio = parseInt(bar.style.width) / 120;
                if ( cfg.showMonsterHP && !cfg.quickbarBesideMonsters && !cfg.condenseLeft ) {
                    var div = monster.appendChild(document.createElement('div'));
                    div.className = 'monsterhp';
                    div.innerHTML = 'HP: ' + Math.round(ratio * monsterData.hp[i]).toLocaleString() + ' / ' + monsterData.hp[i].toLocaleString(); }
                if ( cfg.shortenHPbars && monsterData.hp[i] < monsterData.hp[10] ) {
                    var factor = monsterData.hp[i] / monsterData.hp[10],
                        border = monster.querySelector('img[src$="nbarfg.png"]'),
                        bg = monster.querySelector('.chbd');
                    bar.style.width = Math.round(ratio * factor * 120) + 'px';
                    border.style.width = Math.round(factor * 120) + 'px';
                    border.style.height = '12px';
                    bg.style.width = Math.round(factor * 120) + 'px'; }}
            if ( cfg.colours.stun || cfg.colours.imperil || cfg.colours.stunimperil ) {
                var status = monster.querySelector('.btm6'),
                    stun = status.innerHTML.indexOf('wpn_stun.png') > -1,
                    imperil = status.innerHTML.indexOf('imperil.png') > -1;
                if ( cfg.colours.stunimperil && stun && imperil ) {
                    monster.style.background = cfg.colours.stunimperil; }
                else if ( cfg.colours.stun && stun ) {
                    monster.style.background = cfg.colours.stun; }
                else if ( cfg.colours.imperil && imperil ) {
                    monster.style.background = cfg.colours.imperil; }}}}}
I think here is the key point,
CODE
    hoverArea: 6, // part of the monster that activates hover
                  // 1: whole box, 2: icon, 3: name, 4: vitals, 6: status effects
CODE
function Monsters() {
    var monster;
    for ( var i = 0; i < monsters.length; i++ ) {
        if ( (monster = monsters[i]) && monster.hasAttribute('onclick') ) {
            var area = monster.querySelector('.btm' + cfg.hoverArea) || monster;
            area.addEventListener('mouseout', ClearTarget, true);
            area.addEventListener('mouseover', SetTarget(i), true);


when
hoverArea == 6
i == 0
RUN
CODE
monster = monsters[0]

then
RUN
CODE
var area = monster.querySelector('.btm' + 6) || monster;

after this,
area == monster.querySelector('.btm' + 6)
then
RUN
CODE
area.addEventListener('mouseover', SetTarget(i), true);

after this,
when mouse move over the "hoverArea6",
SetTarget(0) will be runed,
CODE
function SetTarget(i) { return function() {
    target = i;
    if ( (cfg.hoverAction || override) && !interruptHover && !interruptAlert && monsters[target].hasAttribute('onclick') ) {
        Hover(); }};}

after this,
target == 0;
"!monsters[target]" become "false",
"!monsters[target].hasAttribute('onclick')" become "false"


so
CODE
( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') )
it become
CODE
( false || false || false || false )
it mean "false".

and then
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
here, most of time NOT run
CODE
action(); done = true; impulse = false;


***

Sorry for so long.........

Maybe...
DJNoni and uareader are saying the same problem?..

This post has been edited by 3534: Apr 28 2020, 12:17
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 29 2020, 01:03
Post #561
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


ah, i see, this is because i didn't design Impulse with it being used as a hover action in mind. try taking the Hover function around line 1389 and replacing it with this:

CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    monsters[target].click(); }

now you can initiate your rotation with this hoverShiftAction:
CODE
Strongest([Cast('Ragnarok'), Cast('Disintegrate'), Cast('Corruption'), Impulse(Cast('Imperil'))])

hover stopping after the Impulse action would not be intended behaviour, but you can do it like this:
CODE
hoverShiftAction: "Strongest([ToggleHover, Cast('Imperil')])",
hoverAutoresume: true,

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 29 2020, 12:31
Post #562
3534



Active Poster
*******
Group: Gold Star Club
Posts: 1,866
Joined: 14-March 11
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 29 2020, 07:03) *

ah, i see, this is because i didn't design Impulse with it being used as a hover action in mind. try taking the Hover function around line 1389 and replacing it with this:

CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    monsters[target].click(); }

now you can initiate your rotation with this hoverShiftAction:
CODE
Strongest([Cast('Ragnarok'), Cast('Disintegrate'), Cast('Corruption'), Impulse(Cast('Imperil'))])
setting:
CODE
// @match        https://*.hentaiverse.org/*
turnDividers: true, //         add horizontal row between turns
hoverCtrlAction: "Strongest([Cast('Wrath of Thor'), Cast('Chained Lightning'), Cast('Shockblast'), Impulse(Cast('Imperil'))])", // alternate hover action when holding ctrl

much better (IMG:[invalid] style_emoticons/default/laugh.gif)


but if with always holding "ctrl" go in a new round,
at a new round, hover the monster, will not hit Imperil as intended,
it will become Wrath of Thor/Chained Lightning/Shockblast( as the cool down),
need to release "ctrl", and holding again, and hover, then it hits imp.

if I am right, the reason maybe about here:
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    monsters[target].click(); }
in the old round, after this,
done == true
impulse == false

due to with always holding "ctrl" go in a new round,
have no a new keydown,
these code do NOT work
CODE
function handleKeys(e) {
    if ( release ) {
        done = false;
        release = false; }
    saveKeyDown();
    shiftHeld = e.shiftKey;
    ctrlHeld = e.ctrlKey;
    altHeld = e.altKey;
    var bind;
    for ( var i = 0; i < bindings.length; i++ ) {
        bind = bindings[i];
        if ( e.keyCode == bind.keyCode && bind.modifier(e) ) {
            bind.action();
            return; }}
    loadKeyDown(); }

"done" still be "true"

when player hover at the new round,
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    monsters[target].click(); }
CODE
hoverCtrlAction: "Strongest([Cast('Wrath of Thor'), Cast('Chained Lightning'), Cast('Shockblast'), Impulse(Cast('Imperil'))])"
CODE
function Strongest(actions) { return function() { var n = actions.length; while ( n-- > 0 ) actions[n](); };}
CODE
function Impulse(action) {
    return function() {
        if ( done ) return;
        impulse = action;
        if ( interruptHover || interruptAlert || !monsters[target] || !monsters[target].hasAttribute('onclick') ) {
            action(); done = true; impulse = false; }};}
Strongest() return cast the Wrath of Thor/Chained Lightning/Shockblast( as the cool down ),
and due to "done == true",
impulse != action
actually, impulse == false

then come back here:
CODE
function Hover() {
    if ( hovering ) return;
    hovering = true;
    if ( override ) {
        override(); }
    else if ( shiftHeld && cfg.hoverShiftAction ) {
        cfg.hoverShiftAction(); }
    else if ( ctrlHeld && cfg.hoverCtrlAction ) {
        cfg.hoverCtrlAction(); }
    else if ( altHeld && cfg.hoverAltAction ) {
        cfg.hoverAltAction(); }
    else {
        cfg.hoverAction(); }
    if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }
    monsters[target].click(); }


due to "impulse == false", this part does not work,
CODE
if ( impulse ) {
        impulse();
        done = true;
        impulse = false; }


finally,
"monsters[target].click();" work with Strongest() return cast (Wrath of Thor/Chained Lightning/Shockblast).


***************************************************************************************************
***************************************************************************************************


Change the way to talk about that:
Plan A,
QUOTE
QUOTE(3534 @ Apr 28 2020, 17:33) *

[a] when I enter GF, mouse is outside the hover area, nothing happend
[b.] push "shift" and holding it
[c] mouse go in the hover area, with still holding "shift"
[e] first turn, imp hit. (mouse still in the hover area, with still holding "shift")
[f] action stop (mouse still in the hover area, with still holding "shift")
[g] mouse go out of the hover area (still holding "shift")
[h] mouse go in the hover area, with still holding "shift"
[i] second turn, imp hit. (mouse still in the hover area, with still holding "shift")
[j] action stop (mouse still in the hover area, with still holding "shift")
[k] mouse go out of the hover area (still holding "shift")
[l] mouse go in the hover area, with still holding "shift"
[m] third turn, imp hit. (mouse still in the hover area, with still holding "shift")
[n] action stop (mouse still in the hover area, with still holding "shift")
[o] mouse go out of the hover area (still holding "shift")
...
[p] mouse go out of the hover area, release "shift"

maybe a little look like use "onmouseenter" instead of "onmouseover"...?
addEventListener('mouseenter', function)
addEventListener('mouseover', function)
and if "interruptAlert" is "true", such as spark or low hp,
though mouse still in the hover area, with still holding "shift", will
NOT hit imp
this usage is it allowed?
( I am still not sure how to do this job in code, but first of all, it is legal or not...? (IMG:[invalid] style_emoticons/default/unsure.gif) )


-

Plan B,
setting:
CODE
clickRight: "Cast('Imperil')"

and edit the code here:
from
CODE
function HandleClick(i) {
    return function(e) {
        var action;
        if ( (i || i === 0) && e.which == 1 ) action = cfg.clickLeft;
        else if ( e.which == 2 ) action = cfg.clickMiddle;
        else if ( e.which == 3 ) action = cfg.clickRight;
        if ( action ) {
            e.preventDefault();
            if ( release ) {
                done = false;
                release = false; }
            action();
            if ( i || i === 0 ) {
                monsters[i].click(); }}};}
to
CODE
forbidden code
use right click to imp,
when in spark or low hp, will not hit, only cast (be ready),
if still want to hit the imp at monster, just push left click or number key.
maybe slower and worse than "hoverImperil", but much easier to finish the code.
and this, is it allowed?
(IMG:[invalid] style_emoticons/default/unsure.gif)

This post has been edited by 3534: Apr 30 2020, 03:12
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 29 2020, 23:17
Post #563
sickentide



sexromancer
*******
Group: Catgirl Camarilla
Posts: 1,355
Joined: 31-August 10
Level 500 (Ponyslayer)


QUOTE(3534 @ Apr 29 2020, 12:31) *

but if with always holding "ctrl" go in a new round,
at a new round, hover the monster, will not hit Imperil as intended,
it will become Wrath of Thor/Chained Lightning/Shockblast( as the cool down),
need to release "ctrl", and holding again, and hover, then it hits imp.

this is intended. i can't see automatically casting a spell once at the beginning of each round being in accordance with the rules

QUOTE(3534 @ Apr 29 2020, 12:31) *

Plan A,
this usage is it allowed?

i don't think so, the recommended way to imperil safely as described above is already more of a tolerated fluke than an explicitly allowed exception. this would effectively be a method to perform single actions while being protected by the safeguards that are allowed for hover only

QUOTE(3534 @ Apr 29 2020, 12:31) *

Plan B,
and this, is it allowed?

no. automatic prevention of actions is allowed only as a special exception for automatic hover attacks. for a manual click, it would be forbidden
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 30 2020, 07:54
Post #564
3534



Active Poster
*******
Group: Gold Star Club
Posts: 1,866
Joined: 14-March 11
Level 500 (Ponyslayer)


QUOTE(sickentide @ Apr 30 2020, 05:17) *

this is intended. i can't see automatically casting a spell once at the beginning of each round being in accordance with the rules

i don't think so, the recommended way to imperil safely as described above is already more of a tolerated fluke than an explicitly allowed exception. this would effectively be a method to perform single actions while being protected by the safeguards that are allowed for hover only

no. automatic prevention of actions is allowed only as a special exception for automatic hover attacks. for a manual click, it would be forbidden

very sorry for my poor English... (IMG:[invalid] style_emoticons/default/unsure.gif)
I worry about get the wrong mean.

are you meaning:
"Plan B" is NOT allowed, very clearly.
"Plan A" is allowed, but not very sure, if want the clearly result, maybe need to discuss with admin?
or "Plan A" is allowed, clearly.
or both A&B are NOT allowed.

plan B code above already delete.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 30 2020, 16:18
Post #565
Nezu



Rat
********
Group: Catgirl Camarilla
Posts: 3,946
Joined: 29-January 12
Level 500 (Ponyslayer)


QUOTE(3534 @ Apr 30 2020, 06:54) *

very sorry for my poor English... (IMG:[invalid] style_emoticons/default/unsure.gif)
I worry about get the wrong mean.

are you meaning:
"Plan B" is NOT allowed, very clearly.
"Plan A" is allowed, but not very sure, if want the clearly result, maybe need to discuss with admin?
or "Plan A" is allowed, clearly.
or both A&B are NOT allowed.

plan B code above already delete.


Plan A is probably not allowed, do not use it
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
post Apr 30 2020, 20:16
Post #566
Noni



Hataraku Noni-sama
***********
Group: Catgirl Camarilla
Posts: 13,503
Joined: 19-February 16
Level 500 (Ponyslayer)


A&B not allowed.

Feel free to contact admin if you must. But don't be surprised if you don't get an answer.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post


45 Pages V « < 27 28 29 30 > » 
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 


Lo-Fi Version Time is now: 6th September 2025 - 14:37