#include "h/mud.h" /* Let noobs go to places for free under level 20, after that take people to general locations at cost */ void do_activate(CHAR_DATA *ch, char *argument) { OBJ_DATA *stone, *rune = NULL; bool found = FALSE; char arg[MIL]; ROOM_INDEX_DATA *room; int rvnum = 0, ivnum, unum; argument = one_argument(argument, arg); if(ch->level < 2) { send_to_char("You must complete the tutorial to use this command.\r\n", ch); return; } if(IS_NPC(ch)) { return; } for(stone = ch->in_room->first_content; stone; stone = stone->next_content) { if(stone->item_type == ITEM_STONE) { found = TRUE; break; } } ivnum = ch->in_room->vnum; if(ivnum == 18636 || ivnum == 1501) { if(ivnum == 18636) rvnum = 1501; // Shattered Refuge else if(ivnum == 1501) rvnum = 18636; // Back to Time Machine if(!(room = get_room_index(rvnum))) { send_to_char("Couldn't send you there. Please inform someone.\r\n", ch); return; } send_to_char("The time machine begins to hum.\r\n", ch); char_from_room(ch); char_to_room(ch, room); if(ch->mount) { char_from_room(ch->mount); char_to_room(ch->mount, room); } act(AT_YELLOW, "$n appears in a spray of shooting light.", ch, NULL, ch, TO_ROOM); do_look(ch, (char *)"auto"); return; } if(!found && ch->in_room->sector_type != SECT_PORTALSTONE) { send_to_char("There must be a portalstone here in order to use activate command.\r\n", ch); return; } /* * Make level 20 and higher require a rune to use */ if(ch->level >= 20 && !IS_STAFF(ch)) { if(ms_find_obj(ch)) return; if(!(rune = get_eq_char(ch, WEAR_HOLD)) || rune->item_type != ITEM_RUNE) { send_to_char("You must be holding an rune to activate the portal stone.\r\n", ch); return; } } if(ch->level < 5 && ch->pcdata->portalstone > 1) { send_to_char("The portalstone is recharging it's magical energies.\r\n", ch); ch->pcdata->portalstone -= 1; WAIT_STATE(ch, 5); return; } short chance = number_range(1, 4); if(ch->level < 5 && ch->pcdata->portalstone == 1) { if(chance == 1) { send_to_char("The portalstone is recharging it's magical energies and will be ready soon.\r\n", ch); ch->pcdata->portalstone -= 1; } if(chance == 2) { send_to_char("The portalstone makes a humming sound.\r\n", ch); ch->pcdata->portalstone -= 1; } if(chance == 3) { send_to_char("The portalstone is producing heat.\r\n", ch); ch->pcdata->portalstone -= 1; } if(chance == 4) { ch->pcdata->portalstone -= 1; } return; } if(!xIS_SET(ch->act, PLR_ACTIVATE)) { if(!arg || arg[0] == '\0') { act(AT_ORANGE, "The portal stone, begins to hum and a series of locations appear in your mind.", ch, NULL, ch, TO_CHAR); act(AT_CYAN, "$n touches the portal stone, and it begins to hum.", ch, NULL, ch, TO_ROOM); send_to_char("&cThe names of the places, as well as how dangerous the area is comes to your mind in a rush.\r\n", ch); xSET_BIT(ch->act, PLR_ACTIVATE); } else { send_to_char("You cannot activate the portalstone with an area already focused in your mind.\r\n", ch); send_to_char("Syntax: Activate - This will turn on the portalstone.\r\n", ch); send_to_char("Syntax: Activate < Location Name > - Will transport you after the stone has been turned on.\r\n", ch); return; } } if(!arg || arg[0] == '\0') { if(xIS_SET(ch->act, PLR_BATTLE)) send_to_char("!!SOUND(sound/60.wav)\r\n", ch); send_to_char("\r\n\r\n&GLocation Difficulty Level\r\n", ch); send_to_char("&G1. Merchant's Discovery 00 - 10\r\n", ch); send_to_char("&G2. Norrinton's South Harbor 10 - 20\r\n", ch); send_to_char("&G3. The Abyss 05 - 10\r\n", ch); send_to_char("&G4. Gnome Tower 05 - 20\r\n", ch); send_to_char("&G5. Kirwood Swamp 00 - 05\r\n", ch); send_to_char("&G6. Abandoned Cabin 05 - 20\r\n", ch); send_to_char("&G7. Garden 15 - 20\r\n", ch); send_to_char("&G8. Tufkul'ar 15 - 30\r\n", ch); send_to_char("&G9. Durdun 10 - 20\r\n", ch); send_to_char("&G10.Spiral Village 10 - 20\r\n", ch); send_to_char("&G11.Ice Cavern 5 - 20\r\n", ch); if(ch->race == RACE_DRAGON) { send_to_char("&G12.Under the Volcano 10 - 20 [&RDragon Only Area&G]\r\n", ch); send_to_char("&cProper Syntax: Activate < Location Number ( 1 - 12 )>\r\n", ch); } else { send_to_char("&G12.Under Sewer 03 - 10 [&RGroup Area&G]\r\n", ch); send_to_char("&G13.Bowels of the Citadel 10 - 25 [&RGroup Area&G]\r\n", ch); // Only for the holidays // send_to_char( "&G14. Santas Workshop 30 - 60\r\n", ch ); send_to_char("&G14. Dragon Knights Raid 3 - 15\r\n", ch); send_to_char("&cProper Syntax: Activate < Location Number ( 1 - 14 )>\r\n", ch); } return; } if(!is_number(arg)) { send_to_char("Syntax: Activate <#>\r\n", ch); return; } unum = atoi(arg); if(unum == 1) rvnum = 2758; else if(unum == 2) rvnum = 10001; else if(unum == 3) rvnum = 7501; else if(unum == 4) rvnum = 18631; else if(unum == 5) rvnum = 27001; else if(unum == 6) rvnum = 29000; else if(unum == 7) rvnum = 4008; else if(unum == 8) rvnum = 28251; else if(unum == 9) rvnum = 18300; else if(unum == 10) rvnum = 13027; else if(unum == 11) rvnum = 6279; else if(unum == 12) { if(ch->race == RACE_DRAGON) rvnum = 8310; else rvnum = 4901; } else if(unum == 13) rvnum = 5300; // holidays only /* else if ( unum == 14 ) rvnum = 34001; */ else if(unum == 14) rvnum = 29100; if(!(room = get_room_index(rvnum))) { send_to_char("Couldn't send you there. Please inform someone.\r\n", ch); return; } if(ch->level >= 20 && rune) extract_obj(rune); act(AT_ORANGE, "A strange light envelopes you!", ch, NULL, ch, TO_CHAR); act(AT_ORANGE, "$n is enveloped in a strange light!", ch, NULL, ch, TO_ROOM); char_from_room(ch); char_to_room(ch, room); if(ch->mount) { char_from_room(ch->mount); char_to_room(ch->mount, room); } act(AT_ORANGE, "The light suddenly fades!", ch, NULL, ch, TO_CHAR); act(AT_ORANGE, "$n appears within a strange light!", ch, NULL, ch, TO_ROOM); do_look(ch, (char *)"auto"); xREMOVE_BIT(ch->act, PLR_ACTIVATE); if(ch->level < 5 && ch->pcdata->portalstone == 0) { ch->pcdata->portalstone = 7; } }