summaryrefslogblamecommitdiff
path: root/npc/026-6/ctrl.c
blob: ba839992300ec343dcbf541604b60f875d7f2861 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                                 
                                                
                                                                                   
                                     















                                                                                                









                                                                                                                






                    
















































                                                                                                       
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//   The Impregnable Fortress Control Files
// Quest: General_Fortress
//  (MaxFloor+2, internal, internal)

// The antechamber has some traps you should avoid, but beyond the Blood Pact map
// effect, it only has some support NPCs (banker and healer) if you completed the
// Moubootaur Showdown earlier.

// TODO: The main NPC which lets you get in here
// TODO: The boss chamber (also, are mapflags working? This should be a Blood Pact)
// TODO: Storage master, healer, etc.
026-6,21,70,0,	script	#026-6Gate	NPC_FANCY_CIRCLE,1,0,{
    if (getq(General_Fortress) < 6) { die(); end; }
    mesc l(".:: Impregnable Fortress, %sF ::.", "B6"), 3;
    msObjective($MK_TEMPVAR >= MKIF_LV_B7F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B7F));
    mes "";
    mesc l("Hint: The Boss Chamber lies herein ahead.");
    close;

L_Warp:
    // Not unlocked
    if ($GAME_STORYLINE >= 3 && $MK_TEMPVAR < MKIF_LV_B7F) {
        mesc l("The gate is sealed shut."), 1;
        mesc l("The monster army is still strong on this floor!"), 1;
        mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B7F), 1;
        close;
    }
    if (!$@MK_CHALLENGE && !islegendary() && strcharinfo(0) != $MOST_HEROIC$) {
        dispbottom l("I should wait for %s or one of the heroes to challenge the Monster King.", $MOST_HEROIC$);
        end;
    }
	doevent "#DungeonCore::OnBlood";
    slide any(21, 22), 63;
    end;

OnGoto:
    slide 46, 114;
    end;

OnInit:
	.distance=3;
    end;
}

026-6,22,40,0,	script	#MKBossFightFire	NPC_HIDDEN,0,0,{
    end;
OnTouch:
    warp "026-7", 21, 28;
    if (!$@MK_CHALLENGE) {
        $@MK_CHALLENGE=true;
        kamibroadcast(strcharinfo(0)+" has CHALLENGED the MONSTER KING to a SHOWDOWN!", "WORLD HEART");
        sleep(2500);
        kamibroadcast("The teleporter is now enabled... Get to positions!", "WORLD HEART");
        sleep(5000);
        kamibroadcast("It is... SHOWDOWN TIME!", "WORLD HEART");
        sleep(2500);
        donpcevent "Impregnable#B7F::OnBegin";
    }
    end;
}

// Room Traps, only against players
026-6,0,0,0	script	#0266_Trap01	NPC_TRAP_ONLINE,0,0,{
    end;

OnTouch:
OnTouchNPC:
    WorldHeartTrap();
    sleep(500); // Wait 500ms for animation
    setnpcdisplay .name$, NPC_TRAP_ONLINE;
    // Move the trap away after it disarms (up to 30 attempts)

OnInit:
    .@e=0;
    do {
        if (.@e >= 30)
            break;
        .@x = rand2(21, 60);
        .@y = rand2(21, 60);
        .@e+=1;
    } while (!checknpccell("026-6", .@x, .@y, cell_chkpass));
    movenpc .name$, .@x, .@y;
    end;
}

// Create more traps
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap02	NPC_TRAP,0,0
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap03	NPC_TRAP,0,0
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap04	NPC_TRAP,0,0
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap05	NPC_TRAP,0,0
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap06	NPC_TRAP,0,0
026-6,0,0,0	duplicate(#0266_Trap01)	#0266_Trap07	NPC_TRAP,0,0