From 0a59b078e15e4b4fb4a63caffc32531b6befb150 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 00:41:45 -1100 Subject: [PATCH 01/12] -proint --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index c4a142ba1..451b3bedb 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1249,7 +1249,7 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C case 'K': // keystrokes case 'H': // win case 'Q': // bailout - fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); + //fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); return(true); break; default: From dae06859f1803ad54733671a512c993cc34a5417 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 00:57:16 -1100 Subject: [PATCH 02/12] -sleep --- src/cc/rogue/pack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 8fc488389..39dc163b1 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -259,7 +259,7 @@ int32_t num_packitems() total += list->o_count; } } - fprintf(stderr,"total.%d vs %d inventory letters\n",total,n); sleep(1); + fprintf(stderr,"total.%d vs %d inventory letters\n",total,n); return(n); } From 040d3f8bfeebe26f46104c6000efe8352e03a39d Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:04:14 -1100 Subject: [PATCH 03/12] Print --- src/cc/rogue/pack.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 39dc163b1..1589d4d34 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -259,14 +259,17 @@ int32_t num_packitems() total += list->o_count; } } - fprintf(stderr,"total.%d vs %d inventory letters\n",total,n); + + char inv_temp[MAXSTR],str[MAXSTR]; + sprintf(str,"total.%d vs %d inventory letters\n",total,n); + add_line(rs,inv_temp,str); return(n); } bool inventory(struct rogue_state *rs,THING *list, int type) { - static char inv_temp[MAXSTR]; + char inv_temp[MAXSTR]; n_objs = 0; for (; list != NULL; list = next(list)) From e4c1ce63964d04147e20bcb4e4643a852ee38bbe Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:04:51 -1100 Subject: [PATCH 04/12] struct rogue_state *rs --- src/cc/rogue/pack.c | 4 ++-- src/cc/rogue/rogue.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 1589d4d34..0c967a85b 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -165,7 +165,7 @@ out: bool pack_room(struct rogue_state *rs,bool from_floor, THING *obj) { - inpack = num_packitems(); + inpack = num_packitems(rs); if (++inpack > MAXPACK) { if (!terse) @@ -247,7 +247,7 @@ pack_char() * the given type. */ -int32_t num_packitems() +int32_t num_packitems(struct rogue_state *rs) { THING *list = pack; int32_t type = 0,n = 0,total = 0; diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index 905a5ed36..515c1d44a 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -802,7 +802,7 @@ THING *leave_pack(struct rogue_state *rs,THING *obj, bool newobj, bool all); THING *new_item(void); THING *new_thing(struct rogue_state *rs); void end_line(struct rogue_state *rs); -int32_t num_packitems(); +int32_t num_packitems(struct rogue_state *rs); void runners(struct rogue_state *rs,int); void land(struct rogue_state *rs,int); From 63bad40a584d5a8c6206219103960ddd68f21e53 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:07:59 -1100 Subject: [PATCH 05/12] Fat --- src/cc/rogue/pack.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 0c967a85b..7e93dd759 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -260,9 +260,9 @@ int32_t num_packitems(struct rogue_state *rs) } } - char inv_temp[MAXSTR],str[MAXSTR]; + char str[MAXSTR]; sprintf(str,"total.%d vs %d inventory letters\n",total,n); - add_line(rs,inv_temp,str); + add_line(rs,"%s",str); return(n); } From f9b288af4768d7f4f75a44da02ab1067accbed0a Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:11:53 -1100 Subject: [PATCH 06/12] Total < strength*3 --- src/cc/rogue/pack.c | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 7e93dd759..f8fc98175 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -157,37 +157,55 @@ out: } } +int32_t num_packitems(struct rogue_state *rs) +{ + THING *list = pack; + int32_t type = 0,n = 0,total = 0; + for (; list != NULL; list = next(list)) + { + if ( list->o_packch != 0 ) + { + n++; + total += list->o_count; + } + } + + char str[MAXSTR]; + sprintf(str,"strength*3 %d vs total.%d vs %d inventory letters\n",pstats.s_str*3,total,n); + add_line(rs,"%s",str); + if ( total > pstats.s_str*3 ) + return(MAXPACK); + return(n); +} + /* * pack_room: * See if there's room in the pack. If not, print out an * appropriate message */ -bool -pack_room(struct rogue_state *rs,bool from_floor, THING *obj) +bool pack_room(struct rogue_state *rs,bool from_floor, THING *obj) { inpack = num_packitems(rs); - if (++inpack > MAXPACK) + if ( ++inpack > MAXPACK ) { - if (!terse) - addmsg(rs,"there's "); - addmsg(rs,"no room"); - if (!terse) - addmsg(rs," in your pack"); - endmsg(rs); - if (from_floor) - move_msg(rs,obj); - inpack = MAXPACK; - return FALSE; + if (!terse) + addmsg(rs,"there's "); + addmsg(rs,"no room"); + if (!terse) + addmsg(rs," in your pack"); + endmsg(rs); + if (from_floor) + move_msg(rs,obj); + inpack = MAXPACK; + return FALSE; } //fprintf(stderr,"inpack.%d vs MAX.%d\n",inpack,MAXPACK), sleep(2); - - if (from_floor) + if ( from_floor != 0 ) { - detach(lvl_obj, obj); - mvaddch(hero.y, hero.x, floor_ch()); - chat(hero.y, hero.x) = (proom->r_flags & ISGONE) ? PASSAGE : FLOOR; + detach(lvl_obj, obj); + mvaddch(hero.y, hero.x, floor_ch()); + chat(hero.y, hero.x) = (proom->r_flags & ISGONE) ? PASSAGE : FLOOR; } - return TRUE; } @@ -247,24 +265,6 @@ pack_char() * the given type. */ -int32_t num_packitems(struct rogue_state *rs) -{ - THING *list = pack; - int32_t type = 0,n = 0,total = 0; - for (; list != NULL; list = next(list)) - { - if ( list->o_packch != 0 ) - { - n++; - total += list->o_count; - } - } - - char str[MAXSTR]; - sprintf(str,"total.%d vs %d inventory letters\n",total,n); - add_line(rs,"%s",str); - return(n); -} bool inventory(struct rogue_state *rs,THING *list, int type) From 575f5b4fd85d91560e6feb27a15934a6cbb51070 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:13:31 -1100 Subject: [PATCH 07/12] Disable --- src/cc/rogue_rpc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 06d2b63b8..f4f45bf25 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1219,6 +1219,7 @@ UniValue rogue_setname(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx) { CScript scriptPubKey; std::vector vopret; uint8_t *script,e,f,funcid; int32_t i,maxplayers,decoded=0,regslot,ind,errflag,dispflag,score,numvouts; CTransaction vintx; CPubKey pk; uint256 hashBlock,gametxid,tokenid,batontxid,playertxid; int64_t buyin; std::vector playerdata,keystrokes; std::string symbol,pname; + return(true); if ( (numvouts= tx.vout.size()) > 1 ) { scriptPubKey = tx.vout[numvouts-1].scriptPubKey; @@ -1289,7 +1290,7 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C return(true); break; default: - fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); + //fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); return eval->Invalid("illegal rogue funcid"); break; } From 54319f4bb65ce2ff948b23d58247f15ca515b0d8 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:20:28 -1100 Subject: [PATCH 08/12] Test opret validation --- src/cc/rogue_rpc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 068a959cc..e5381a802 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1219,7 +1219,6 @@ UniValue rogue_setname(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx) { CScript scriptPubKey; std::vector vopret; uint8_t *script,e,f,funcid; int32_t i,maxplayers,decoded=0,regslot,ind,errflag,dispflag,score,numvouts; CTransaction vintx; CPubKey pk; uint256 hashBlock,gametxid,tokenid,batontxid,playertxid; int64_t buyin; std::vector playerdata,keystrokes; std::string symbol,pname; - return(true); if ( (numvouts= tx.vout.size()) > 1 ) { scriptPubKey = tx.vout[numvouts-1].scriptPubKey; @@ -1254,6 +1253,7 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C case 'R': if ( (funcid= rogue_registeropretdecode(gametxid,tokenid,playertxid,scriptPubKey)) != 'R' ) return eval->Invalid("couldnt decode register opret"); + // validation is done below break; case 'K': if ( (funcid= rogue_keystrokesopretdecode(gametxid,batontxid,pk,keystrokes,scriptPubKey)) != 'K' ) @@ -1264,6 +1264,7 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C case 'H': case 'Q': if ( (f= rogue_highlanderopretdecode(gametxid,tokenid,regslot,pk,playerdata,symbol,pname,scriptPubKey)) != funcid ) return eval->Invalid("couldnt decode H/Q opret"); + // validation is done below break; default: return eval->Invalid("illegal rogue non-decoded funcid"); From c19cc548ad998128ea19628bcc9294e2746f8103 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:22:53 -1100 Subject: [PATCH 09/12] Height exemption --- src/cc/rogue_rpc.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index e5381a802..b1eb36e65 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1246,7 +1246,11 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C { case 'G': if ( (funcid= rogue_newgameopreturndecode(buyin,maxplayers,scriptPubKey)) != 'G' ) - return eval->Invalid("couldnt decode newgame opret"); + { + fprintf(stderr,"height.%d couldnt decode newgame opret\n",height); + if ( height > 20000 ) + return eval->Invalid("couldnt decode newgame opret"); + } // validate newgame tx return(true); break; From 53c35e3c89c1ea5358e75ebf9a6069b5fac6a424 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:26:56 -1100 Subject: [PATCH 10/12] Test --- src/cc/rogue_rpc.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index b1eb36e65..6e6da24f2 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1240,6 +1240,7 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C } if ( e == EVAL_ROGUE ) { + fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); if ( decoded == 0 ) { switch ( funcid ) @@ -1261,7 +1262,11 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C break; case 'K': if ( (funcid= rogue_keystrokesopretdecode(gametxid,batontxid,pk,keystrokes,scriptPubKey)) != 'K' ) - return eval->Invalid("couldnt decode keystrokes opret"); + { + fprintf(stderr,"height.%d couldnt decode keystrokes opret\n",height); + if ( height > 20000 ) + return eval->Invalid("couldnt decode keystrokes opret"); + } // validate keystrokes are from the correct pk. might need to add vin return(true); break; @@ -1286,7 +1291,6 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C return(true); break; default: - //fprintf(stderr,"ht.%d rogue.(%c)\n",height,script[1]); return eval->Invalid("illegal rogue funcid"); break; } From aa26fa0a69c7ba92ab3b2a0ade2c5adf8eac2300 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:30:05 -1100 Subject: [PATCH 11/12] Bypass all --- src/cc/rogue_rpc.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 6e6da24f2..994cbe319 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1257,7 +1257,11 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C break; case 'R': if ( (funcid= rogue_registeropretdecode(gametxid,tokenid,playertxid,scriptPubKey)) != 'R' ) - return eval->Invalid("couldnt decode register opret"); + { + fprintf(stderr,"height.%d couldnt decode register opret\n",height); + if ( height > 20000 ) + return eval->Invalid("couldnt decode register opret"); + } // validation is done below break; case 'K': @@ -1272,7 +1276,11 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C break; case 'H': case 'Q': if ( (f= rogue_highlanderopretdecode(gametxid,tokenid,regslot,pk,playerdata,symbol,pname,scriptPubKey)) != funcid ) - return eval->Invalid("couldnt decode H/Q opret"); + { + fprintf(stderr,"height.%d couldnt decode H/Q opret\n",height); + if ( height > 20000 ) + return eval->Invalid("couldnt decode H/Q opret"); + } // validation is done below break; default: From 535741426479fc5d01d35ef90b74ed6fba2b880c Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 18 Feb 2019 01:35:21 -1100 Subject: [PATCH 12/12] Test --- src/cc/rogue_rpc.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 994cbe319..ef24489ba 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1234,7 +1234,9 @@ bool rogue_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const C if ( (funcid= rogue_registeropretdecode(gametxid,tokenid,playertxid,scriptPubKey)) == 0 ) { funcid = 'Q'; - fprintf(stderr,"ht.%d couldnt decode tokens opret\n",height); + fprintf(stderr,"ht.%d couldnt decode tokens opret (%c)\n",height,script[1]); + if ( height < 20000 ) + e = EVAL_ROGUE; } else e = EVAL_ROGUE, decoded = 1; } else e = EVAL_ROGUE, decoded = 1; }