Jump to content
The forums will be going offline for an extended maintenance period at 1400hrs GMT on 19th June 2025. The number of hours for this downtime is intentionally not advertised due to the nature of these upgrades. ×

sandbox

Members
  • Posts

    949
  • Joined

  • Last visited

  • Days Won

    16

Posts posted by sandbox

  1.  
    // Mobs and Pets view-range adjustment (range2 column in the mob_db) (Note 2)
    view_range_rate: 100
     
    // Chase Range is the base minimum-chase that a mob gives before giving up
    // (as long as the target is outside their field of view). This is the range3
    // column in the mob_db. (Note 2)
    chase_range_rate: 100
    • Upvote 1
  2. 
    

    prontera,100,200,3 script Freebies 78,{

    if(#Freebie) {

    mes "You already got your freebies";

    close;

    }

    mes "Here's your freebies";

    getitem 1234,1;

    set #Freebie = 1;

    close;

    }

  3. Try this, based on getitembound..

    -	script	item3	-1,{
    
    OnInit:
    	bindatcmd strnpcinfo(1),strnpcinfo(1)+"::OnAtcommand",4,40;
    	end;
    
    OnAtcommand:
    	if(.@atcmd_numparameters < 2) {
    		message strcharinfo(0),"Invalid Syntax (usage: @item3 <item id/name> <amount>).";
    		message strcharinfo(0),.@atcmd_command$+" failed.";
    	}
    	else {
    		getitembound .@atcmd_parameters$[0],atoi(.@atcmd_parameters$[1]),4;
    	}
    	end;
    
    
    }
    
    -	script	item4	-1,{
    
    OnInit:
    	bindatcmd strnpcinfo(1),strnpcinfo(1)+"::OnAtcommand",4,40;
    	end;
    
    OnAtcommand:
    	if(.@atcmd_numparameters < 9) {
    		message strcharinfo(0),"Invalid Syntax (usage: @item3 <item id/name> <amount> <identify> <refine> <attribute> <card1> <card2> <card3> <card4>).";
    		message strcharinfo(0),.@atcmd_command$+" failed.";
    	}
    	else {
    		getitembound2 .@atcmd_parameters$[0],atoi(.@atcmd_parameters$[1]),atoi(.@atcmd_parameters$[2]),atoi(.@atcmd_parameters$[3]),atoi(.@atcmd_parameters$[4]),atoi(.@atcmd_parameters$[5]),atoi(.@atcmd_parameters$[6]),atoi(.@atcmd_parameters$[7]),atoi(.@atcmd_parameters$[8]),4;
    	}
    	end;
    
    
    }
    
  4. prontera,100,200,3	script	VIPBuffer	78,{
    
    specialeffect2 EF_HEAL2; percentheal 100,100;
    
    if(countitem(30000)){
    	specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,600000,10;
    	specialeffect2 EF_BLESSING; sc_start SC_BLESSING,600000,10;
    	specialeffect2 EF_ANGELUS; sc_start SC_ANGELUS,600000,10;
    	specialeffect2 EF_SUFFRAGIUM; sc_start SC_SUFFRAGIUM,600000,3;
    	specialeffect2 EF_IMPOSITIO; sc_start SC_IMPOSITIO,600000,5;
    	specialeffect2 EF_GLORIA; sc_start SC_GLORIA,600000,5;
    	specialeffect2 EF_MAGNIFICAT; sc_start SC_MAGNIFICAT,600000,5;
    	specialeffect2 EF_CHEMICALPROTECTIOn; sc_start SC_CP_WEAPON,600000,5;
    		sc_start SC_CP_ARMOR,600000,5;
    		sc_start SC_CP_SHIELD,600000,5;
    		sc_start SC_CP_HELM,600000,5;
    	specialeffect2 EF_ASSUMPTIO; sc_start SC_ASSUMPTIO,600000,5;
    		sc_start SC_ADRENALINE2,600000,1;
    	specialeffect2 EF_MAXPOWER; sc_start SC_MAXIMIZEPOWER,600000,5;
    	specialeffect2 EF_PERFECTION; sc_start SC_WEAPONPERFECTION,600000,5;
    	specialeffect2 EF_ENDURE; sc_start SC_ENDURE,600000,10;
    		sc_start SC_KAUPE,600000,3;
    		sc_start SC_KAITE,600000,7;
    		sc_start SC_STRFOOD,600000,5;
    		sc_start SC_AGIFOOD,600000,5;
    		sc_start SC_VITFOOD,600000,5;
    		sc_start SC_INTFOOD,600000,5;
    		sc_start SC_DEXFOOD,600000,5;
    		sc_start SC_LUKFOOD,600000,5;
    
    switch(Class){
    
    case 18:
    case 4019:
    case 4071:
    case 4078:
    	skilleffect "SL_ALCHEMIST",0;
    	sc_start4 SC_SPIRIT,9999999,5,455,0,0;
    	break;
    case 15:
    case 4016:
    case 4070:
    case 4077:
    	skilleffect "SL_MONK",0;
    	sc_start4 SC_SPIRIT,9999999,5,447,0,0;
    	break;
    case 4047:
    	skilleffect "SL_STAR",0;
    	sc_start4 SC_SPIRIT,9999999,5,448,0,0;
    	break;
    case 16:
    case 4017:
    case 4067:
    case 4074:
    	skilleffect "SL_SAGE",0;
    	sc_start4 SC_SPIRIT,9999999,5,449,0,0;
    	break;
    case 14:
    case 4015:
    case 4066:
    case 4073:
    	skilleffect "SL_CRUSADER",0;
    	sc_start4 SC_SPIRIT,9999999,5,450,0,0;
    	break;
    case 23:
    case 4190:
    	skilleffect "SL_SUPERNOVICE",0;
    	sc_start4 SC_SPIRIT,9999999,5,451,0,0;
    	break;
    case 7:
    case 4008:
    case 4054:
    case 4060:
    	skilleffect "SL_KNIGHT",0;
    	sc_start4 SC_SPIRIT,9999999,5,452,0,0; 
    	break;
    case 9:
    case 4010:
    case 4055:
    case 4061:
    	skilleffect "SL_WIZARD",0;
    	sc_start4 SC_SPIRIT,9999999,5,453,0,0;
    	break;
    case 8:
    case 4009:
    case 4057:
    case 4063:
    	skilleffect "SL_PRIEST",0;
    	sc_start4 SC_SPIRIT,9999999,5,454,0,0;
    	break;
    case 19:
    case 20:
    case 4020:
    case 4021:
    case 4068:
    case 4069:
    case 4075:
    case 4076:
    	skilleffect "SL_BARDDANCER",0;
    	sc_start4 SC_SPIRIT,9999999,5,455,0,0;
    	break;
    case 17:
    case 4018:
    case 4072:
    case 4079:
    	skilleffect "SL_ROGUE",0;
    	sc_start4 SC_SPIRIT,9999999,5,456,0,0;
    	break;
    case 12:
    case 4013:
    case 4059:
    case 4065:
    	skilleffect "SL_ASSASIN",0;
    	sc_start4 SC_SPIRIT,9999999,5,457,0,0;
    	break;
    case 10:
    case 4011:
    	skilleffect "SL_BLACKSMITH",0;
    	sc_start4 SC_SPIRIT,9999999,5,458,0,0;
    	break;
    case 11:
    case 4012:
    case 4056:
    case 4062:
    	skilleffect "SL_HUNTER",0;
    	sc_start4 SC_SPIRIT,9999999,5,460,0,0;
    	break;
    case 4049:
    	skilleffect "SL_SOULLINKER",0;
    	sc_start4 SC_SPIRIT,9999999,5,461,0,0;
    	break;
    default:
    	break;
    
    
    		}
    	
    	}
    
    end;
    }
    
    prontera,101,201,3	script	Broadcaster	78,{
    
    if(!countitem(30000)) {
    	if(Zeny < 1000000) {
    		mes .Npc_Name$;
    		mes "You need 1M to broadcast";
    		close;
    	}
    }
    mes .Npc_Name$;
    mes "Input your message";
    input .@bc$;
    if(!countitem(30000)) Zeny = Zeny-1000000;
    announce strcharinfo(0)+": "+.@bc$,0;
    close;
    
    OnInit:
    	.Npc_Name$ = "Broadcaster";
    	end;
    
    }
    

    For your ticket, Put this on a box or an NPC that will summon the ticket. Tag it as an equip, just set the eLvl = your server's max level + 1

    renitem 30000,2592000;
    • Upvote 1
  5. Oh sorry, kindly move this part to the last, before the closing brace }

    
    
    OnInit:
    	setarray .@App_Guild[0],1001,1002,1003; //Edit content to Guild IDs of approved guilds.
    
    	set .@Npc_Name$,"[^0000FF WoE Supply ^000000]";
    	disablenpc "WoE Supply";
    	end;
    
  6. status_zap(src,0,skill_get_sp(skill_id,skill_lv)); // consume sp only if succeeded [Inkfish]
    			do {
    				int eff = rnd() % 14;
    				clif_specialeffect(bl, 523 + eff, AREA);
    				switch (eff)
    				{
    				case 0:	// heals SP to 0
    					status_percent_damage(src, bl, 0, 100, false);
    					break;
    				case 1:	// matk halved
    					sc_start(src,bl,SC_INCMATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
    					break;
    				case 2:	// all buffs removed
    					status_change_clear_buffs(bl,1);
    					break;
    				case 3:	// 1000 damage, random armor destroyed
    					{
    						status_fix_damage(src, bl, 1000, 0);
    						clif_damage(src,bl,tick,0,0,1000,0,0,0);
    						if( !status_isdead(bl) ) {
    							int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };
    							skill_break_equip(src,bl, where[rnd()%5], 10000, BCT_ENEMY);
    						}
    					}
    					break;
    				case 4:	// atk halved
    					sc_start(src,bl,SC_INCATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
    					break;
    				case 5:	// 2000HP heal, random teleported
    					status_heal(src, 2000, 0, 0);
    					if( !map_flag_vs(bl->m) )
    						unit_warp(bl, -1,-1,-1, CLR_TELEPORT);
    					break;
    				case 6:	// random 2 other effects
    					if (count == -1)
    						count = 3;
    					else
    						count++; //Should not retrigger this one.
    					break;
    				case 7:	// stop freeze or stoned
    					{
    						enum sc_type sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
    						sc_start(src,bl,sc[rnd()%3],100,skill_lv,skill_get_time2(skill_id,skill_lv));
    					}
    					break;
    				case 8:	// curse coma and poison
    					sc_start(src,bl,SC_COMA,100,skill_lv,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_CURSE,100,skill_lv,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_POISON,100,skill_lv,skill_get_time2(skill_id,skill_lv));
    					break;
    				case 9:	// confusion
    					sc_start(src,bl,SC_CONFUSION,100,skill_lv,skill_get_time2(skill_id,skill_lv));
    					break;
    				case 10:	// 6666 damage, atk matk halved, cursed
    					status_fix_damage(src, bl, 6666, 0);
    					clif_damage(src,bl,tick,0,0,6666,0,0,0);
    					sc_start(src,bl,SC_INCATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_INCMATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_CURSE,skill_lv,100,skill_get_time2(skill_id,skill_lv));
    					break;
    				case 11:	// 4444 damage
    					status_fix_damage(src, bl, 4444, 0);
    					clif_damage(src,bl,tick,0,0,4444,0,0,0);
    					break;
    				case 12:	// stun
    					sc_start(src,bl,SC_STUN,100,skill_lv,5000);
    					break;
    				case 13:	// atk,matk,hit,flee,def reduced
    					sc_start(src,bl,SC_INCATKRATE,100,-20,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_INCMATKRATE,100,-20,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_INCHITRATE,100,-20,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_INCFLEERATE,100,-20,skill_get_time2(skill_id,skill_lv));
    					sc_start(src,bl,SC_INCDEFRATE,100,-20,skill_get_time2(skill_id,skill_lv));
    					break;
    				default:
    					break;
    				}
    			} while ((--count) > 0);
    
    

    You have to edit the formula in src/map/skill.c try editing case 8(coma) to this one, make sure to backup as i have not tested it. the code will still poison/curse the user but coma has only 20% chance to take effect.

                    case 8:    // curse coma and poison
    		int rcoma = rnd() % 5;
                        if(rcoma == 1) { sc_start(src,bl,SC_COMA,100,skill_lv,skill_get_time2(skill_id,skill_lv)); }
                        sc_start(src,bl,SC_CURSE,100,skill_lv,skill_get_time2(skill_id,skill_lv));
                        sc_start(src,bl,SC_POISON,100,skill_lv,skill_get_time2(skill_id,skill_lv));
                        break;
    
  7. Just find their respective codes in src/map/status.c

     

    For example, here's Burning's status formula

    
    	case SC_BURNING:
    		if( --(sce->val4) >= 0 ) {
    			struct block_list *src = map_id2bl(sce->val3);
    			int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP)
    
    			map_freeblock_lock();
    			clif_damage(bl,bl,tick,0,0,damage,1,9,0); // Damage is like endure effect with no walk delay
    			status_damage(src, bl, damage, 0, 0, 1);
    			if( sc->data[type]) { // Target still lives. [LimitLine]
    				sc_timer_next(2000 + tick, status_change_timer, bl->id, data);
    			}
    			map_freeblock_unlock();
    			return 0;
    		}
    		break;
    

    Change

    int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP)

    To

    int damage = 500 + 1 * status_get_max_hp(bl) / 100; // Deals fixed (500 + 1%*MaxHP)
×
×
  • Create New...