Do you accept new scripters?
People with Fallout scripting knowledge only, it's not the sort of job to learn how to script on. We need to finish approximately 100 - 200 scripts (i'm guessing, it could be less). See the examples below - if you can write those scripts without struggling, and more importantly if your willing to put in the effort (this is the critical factor) then drop me a message. Now Ardent gets the final say, he's the lead designer and scriptor, he doesn't have the time to teach people how to script.
For example - a fairly small script.........
/* Script from map templete */
/*
Groom Lake Kristinos Mansion map script
GROkrist.map
by Ardent
*/
/* Include Files */
#include "..\headers\define.h"
#include "..\headers\command.h"
#define NAME SCRIPT_GROOMM3
#include "..\headers\UPDATMAP.H"
#include "..\headers\MR\Location\GroomLake.h"
procedure start;
procedure map_exit_p_proc;
procedure map_enter_p_proc;
procedure map_update_p_proc;
/****************** MACROS AND OTHER DEFS *******************/
/****************** VARIABLES *******************/
export variable lucy_pickett_ptr;
export variable pickett_explode_box;
procedure start begin
end
procedure map_enter_p_proc begin
/*if (map_first_run) then begin
mark_on_map(AREA_TRAPPER_TOWN)
display_msg(mstr(100));
end
else begin
display_msg(mstr(101));
end
override_map_start_hex(27918,0,5);*/ //tile, elev, rot
end
procedure map_update_p_proc begin
Lighting;
end
procedure map_exit_p_proc begin
mark_exit_bleeding
end
.............................................................
A larger script....
.............................................................
/*
MR NPC: Deputy Carl Hastings
Role: Sheriff's secretary
Location: Groom Lake West, Police Station
Dialogue: Jinx
Script: Ardent
*/
/* Include Files */
#include "..\headers\define.h"
#define NAME SCRIPT_GROOMC20
#include "..\headers\command.h"
#include "..\headers\GROwest.h"
#include "..\headers\MR\Location\GroomLake.h"
#include "..\headers\MR\Location\GlobalQuests.h"
/* Standard Script Procedures */
procedure start;
procedure timed_event_p_proc;
procedure critter_p_proc;
procedure pickup_p_proc;
procedure destroy_p_proc;
procedure use_p_proc;
procedure look_at_p_proc;
procedure description_p_proc;
procedure use_skill_on_p_proc;
procedure use_obj_on_p_proc;
procedure damage_p_proc;
procedure map_enter_p_proc;
procedure map_exit_p_proc;
procedure map_update_p_proc;
procedure talk_p_proc;
procedure node001;
procedure node002;
procedure node003;
procedure node004;
procedure node005;
procedure node006;
procedure node007;
procedure node008;
procedure node009;
procedure node010;
procedure node011;
procedure node012;
procedure node013;
procedure node014;
procedure node015;
procedure node016;
procedure node017;
procedure node018;
procedure node019;
procedure node020;
procedure node021;
procedure node022;
procedure node023;
procedure node024;
procedure node025;
procedure node026;
procedure node027;
procedure node028;
procedure node029;
procedure node030;
procedure node031;
procedure node032;
procedure node033;
procedure node034;
procedure node035;
procedure node036;
procedure node037;
procedure node038;
procedure node039;
procedure node040;
procedure node041;
procedure node042;
procedure node043;
procedure node044;
procedure node045;
procedure node046;
procedure node047;
procedure node048;
procedure node049;
procedure node050;
procedure node997; //both go to Nolan Bask
procedure node998;
procedure node999;
/*****************************************************************
Local Variables which are saved. All Local Variables need to be
prepended by LVAR_
*****************************************************************/
#define LVAR_Herebefore (4)
#define LVAR_Hostile (5)
#define LVAR_Personal_Enemy (6)
#define LVAR_Q_Important_Position (7)
#define LVAR_Q_Town_News (8)
#define LVAR_Here_For_Area51 (9)
#define LVAR_Been_Node36 (10)
#define LVAR_Thievery_Return (11)
#define open_captains_door if (map_var(MVAR_Hastings_Let_Dude_In) == 0) then \
set_map_var(MVAR_Hastings_Let_Dude_In,1); \
set_map_var(MVAR_Bask_Door_Status,1); \
add_timer_event(captains_door_ew_ptr,1,tefp_unlock_door); \
add_timer_event(captains_door_ns_ptr,1,tefp_unlock_door)
/*******************************************************************
Imported variables from the Map scripts. These should only be
pointers and variables that need not be saved. If a variable
Needs to be saved, make it a map variable (MVAR_)
*******************************************************************/
import variable captains_door_ew_ptr;
import variable captains_door_ns_ptr;
import variable hastings_ptr;
import variable intercom_float;
/*******************************************************************
Local variables which do not need to be saved between map changes.
*******************************************************************/
variable begin
n24_first; been_node44; been_node45; tamper;
end
/*******************************************************************
******* PROCEDURES *******
*******************************************************************/
/*******************************************************************
The start procedure is the first procedure called when the map is
first entered. Any initial information that needs to be set up
should be placed in here.
*******************************************************************/
procedure start begin
hastings_ptr:=self_obj;
end
procedure timed_event_p_proc begin
if (fixed_param == 0) then begin
floater(intercom_float);
end
else if (fixed_param == 1) then begin
tamper:=1;
if (obj_can_see_obj(self_obj,dude_obj)) then begin
dialogue_system_enter;
end
else begin
call talk_p_proc;
end
end
end
/********************************************************************
********************************************************************/
procedure use_p_proc begin
end
/***************************************************************************
This is cursory glance description that the player will receive should
he just pass the Action Cursor over. Examines which give more information
need to be in the description_p_proc procedure.
***************************************************************************/
procedure look_at_p_proc begin
script_overrides;
if (local_var(LVAR_Herebefore) == 0) then
display_msg(mstr(100));
else
display_msg(mstr(101));
end
procedure description_p_proc begin
script_overrides;
display_msg(mstr(102));
end
procedure use_skill_on_p_proc begin
end
procedure use_obj_on_p_proc begin
end
/******************************************************************************************
IF it gets damaged
******************************************************************************************/
procedure pickup_p_proc begin
if (obj_in_party(source_obj)) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
end
procedure damage_p_proc begin
if (obj_in_party(source_obj)) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
end
procedure destroy_p_proc begin
set_global_var(GVAR_GROOM_DEPUTY_HASTINGS_STATUS,GROOM_StatusVal_Hastings_Dead);
if (source_obj == dude_obj) then begin
inc_good_critter
end
if (obj_in_party(source_obj)) then begin
dec_global_var_amt(GVAR_TOWN_REP_REDDING,10);
end
end
/***************************************************************************************
Whenever the map is first entered, this procedure will be called.
***************************************************************************************/
procedure map_enter_p_proc begin
hastings_ptr:=self_obj;
critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_TEAM_NUM,TEAM_GROOM_POLICE);
end
procedure map_exit_p_proc begin
rm_timer_event(self_obj);
end
/**************************************************************************************
This procedure gets called roughly every 30 seconds of real time.
**************************************************************************************/
procedure map_update_p_proc begin
end
procedure critter_p_proc begin
if ((local_var(LVAR_Hostile) == 2) and (obj_can_see_obj(self_obj,dude_obj))) then begin
set_local_var(LVAR_Hostile,1);
attack(dude_obj);
end
end
/**************************************************************************************
This is used for any dialogue that may need to occur with the player.
**************************************************************************************/
procedure talk_p_proc begin
if (tamper > 0) then begin
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
if (global_var(GVAR_GROOM_BASK_QUEST_PROGRESSION) == GROOM_Bask_ThieveryAfoot_Active) then begin //Thievery quest active
if (local_var(LVAR_Thievery_Return) == 0) then
call node022;
else
call node023;
end
else begin
call node050;
end
gsay_end;
end_dialogue;
end
else begin
if (global_var(GVAR_GROOM_BASK_QUEST_PROGRESSION) == GROOM_Bask_ThieveryAfoot_Active) then begin //Thievery quest active
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
if (local_var(LVAR_Thievery_Return) == 0) then
call node022;
else
call node023;
gsay_end;
end_dialogue;
end
else if (global_var(GVAR_GROOM_BASK_QUEST_PROGRESSION) == GROOM_Bask_WitnessProtection_Active) then begin //Witness Protection quest active
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
call node034;
gsay_end;
end_dialogue;
end
else if (global_var(GVAR_GROOM_BASK_QUEST_PROGRESSION) == GROOM_Bask_WitnessProtection_Complete) then begin //Witness Protection quest active
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
call node038;
gsay_end;
end_dialogue;
end
else begin
start_gdialog(NAME,self_obj,4,-1,-1);
gsay_start;
if (local_var(LVAR_Herebefore) == 0) then
call node001;
else
call node002;
gsay_end;
end_dialogue;
end
end
tamper:=0;
end
procedure node001 begin
set_local_var(LVAR_Herebefore,1);
if (dude_is_male) then begin
Reply(200);
end
else begin
Reply(1020);
if (local_var(LVAR_Q_Important_Position) == 0) then
NOption(1021,node018,4);
end
NOption(201,node003,4);
NOption(202,node015,4);
NOption(203,node021,4);
NOption(204,node999,4);
end
procedure node002 begin
Reply(210);
if (GROOM_Quest_TwoBirds_Active) then begin
if (obj_is_carrying_obj_pid(self_obj,PID_CARAVAN_LEDGERS_GROOM_LAKE) > 0) then
NOption(215,node021,4);
end
else begin
if ((dude_is_female) and (map_var(MVAR_Hastings_Let_Dude_In) == 0)) then
NOption(1031,node018,4);
NOption(211,node003,4);
if (map_var(MVAR_Hastings_Let_Dude_In) == 0) then begin
NOption(212,node015,4);
NOption(213,node021,4);
end
else begin
BOption(214,node048,4);
end
end
NOption(216,node999,4);
end
procedure node003 begin
Reply(220);
NOption(221,node004,4);
NOption(222,node009,4);
if (map_var(MVAR_Hastings_Let_Dude_In) == 0) then
NOption(223,node015,4);
else
NOption(224,node048,4);
NOption(225,node999,4);
end
procedure node004 begin
if (local_var(LVAR_Q_Town_News) == 0) then begin
set_local_var(LVAR_Q_Town_News,1);
Reply(230);
end
else begin
Reply(231);
end
NOption(232,node005,4);
NOption(233,node007,4);
NOption(234,node008,4);
NOption(235,node003,4);
NOption(236,node999,4);
end
procedure node005 begin
Reply(240);
NOption(241,node006,4);
NOption(242,node007,4);
NOption(243,node008,4);
NOption(244,node003,4);
NOption(245,node999,4);
end
procedure node006 begin
Reply(250);
NOption(251,node007,4);
NOption(252,node008,4);
NOption(253,node003,4);
NOption(254,node999,4);
end
procedure node007 begin
Reply(260);
NOption(261,node005,4);
NOption(262,node008,4);
NOption(263,node003,4);
NOption(264,node999,4);
end
procedure node008 begin
Reply(270);
NOption(271,node005,4);
NOption(272,node007,4);
NOption(273,node003,4);
NOption(274,node999,4);
end
procedure node009 begin
Reply(280);
NOption(281,node010,4);
NOption(282,node011,4);
NOption(283,node013,4);
NOption(284,node014,4);
NOption(285,node003,4);
NOption(286,node999,4);
end
procedure node010 begin
Reply(290);
NOption(291,node009,4);
if (map_var(MVAR_Hastings_Let_Dude_In) == 0) then
NOption(292,node015,4);
NOption(293,node003,4);
NOption(294,node999,4);
end
procedure node011 begin
Reply(300);
NOption(301,node012,4);
NOption(302,node009,4);
NOption(303,node003,4);
NOption(304,node999,4);
end
procedure node012 begin
Reply(310);
NOption(311,node009,4);
NOption(312,node003,4);
NOption(313,node999,4);
end
procedure node013 begin
Reply(320);
NOption(321,node009,4);
NOption(322,node003,4);
NOption(323,node999,4);
end
procedure node014 begin
GROOM_Set_DudeHeardAboutPickett;
Reply(330);
NOption(331,node009,4);
NOption(332,node003,4);
NOption(333,node999,4);
end
procedure node015 begin
Reply(340);
if ((dude_charisma >= 6) or (has_trait(TRAIT_TRAIT,dude_obj,TRAIT_good_natured)) or (global_var(GVAR_PLAYER_REPUTATION) > 100)) then
GOption(341,node017,4);
else
NOption(342,node016,4);
if ((dude_is_female) and (has_trait(TRAIT_TRAIT,dude_obj,TRAIT_sex_appeal))) then
GOption(1050,node019,4);
NOption(343,node021,4);
NOption(344,node003,4);
NOption(345,node999,4);
end
procedure node016 begin
Reply(350);
NOption(351,node003,4);
if ((Dude_heard_about_area51) and (local_var(LVAR_Here_For_Area51) == 0)) then
NOption(352,node020,4);
NOption(353,node999,4);
end
procedure node017 begin
open_captains_door;
Reply(360);
NOption(361,node999,4);
end
procedure node018 begin
set_local_var(LVAR_Q_Important_Position,1);
Reply(1060);
NOption(1061,node019,4);
NOption(1062,node999,4);
end
procedure node019 begin
open_captains_door;
Reply(1070);
NOption(1071,node999,4);
end
procedure node020 begin
open_captains_door;
set_map_var(MVAR_Hastings_Let_Dude_In,2);
if (dude_is_male) then
Reply(370);
else
Reply(1080);
NOption(371,node999,4);
end
procedure node021 begin
Reply(380);
NOption(381,node997,4);
NOption(382,node999,4);
end
procedure node022 begin
set_local_var(LVAR_Thievery_Return,1);
if (dude_is_male) then
Reply(390);
else
Reply(1090);
GOption(391,node024,4);
NOption(392,node024,4);
if (GROOM_Quest_ThieveryAfoot_Evidence) then
NOption(393,node032,4);
NOption(394,node999,4); //TODO: Correct node
NOption(394,node999,4);
end
procedure node023 begin
if (dude_is_male) then
Reply(400);
else
Reply(1100);
NOption(401,node024,4);
if (GROOM_Quest_ThieveryAfoot_Evidence) then
NOption(402,node032,4);
NOption(403,node999,4); //TODO: Correct node
NOption(404,node999,4);
end
procedure node024 begin
if (n24_first == 0) then begin
n24_first:=1;
Reply(410);
end
else begin
Reply(411);
end
NOption(412,node026,4);
NOption(413,node027,4);
NOption(414,node028,4);
NOption(415,node029,4);
NOption(416,node999,4);
end
procedure node025 begin
//UNUSED
end
procedure node026 begin
set_global_var(GVAR_GROOM_THIEVERY_HARVIN_INFO,1);
Reply(430);
NOption(431,node024,4);
NOption(432,node999,4);
end
procedure node027 begin
set_global_var(GVAR_GROOM_THIEVERY_ANNAMARIA_INFO,1);
Reply(440);
NOption(441,node024,4);
NOption(442,node999,4);
end
procedure node028 begin
Reply(450);
if ((dude_perception >= 7) or (dude_iq >= 7) or (dude_charisma >= 7)) then
NOption(451,node030,4);
NOption(452,node024,4);
NOption(453,node999,4);
end
procedure node029 begin
Reply(460);
NOption(461,node024,4);
NOption(462,node999,4);
end
procedure node030 begin
set_global_var(GVAR_GROOM_THIEVERY_JEN_INFO,1);
Reply(470);
NOption(471,node031,4);
end
procedure node031 begin
Reply(480);
NOption(481,node999,4);
BOption(482,node999,4);
end
procedure node032 begin
Reply(490);
NOption(491,node033,4);
NOption(492,node999,4);
end
procedure node033 begin
//TODO: Float activation
open_captains_door;
Reply(500);
NOption(501,node999,4);
NOption(502,node999,4);
end
procedure node034 begin
if (dude_is_male) then
Reply(510);
else
Reply(1120);
NOption(511,node035,4);
if (global_var(GVAR_GROOM_ALBERT_HORATIO_STATUS) >= GROOM_StatusVal_Albert_Dead) then
NOption(512,node049,4);
NOption(513,node999,4);
end
procedure node035 begin
Reply(520);
NOption(521,node036,4);
NOption(522,node999,4);
end
procedure node036 begin
set_local_var(LVAR_Been_Node36,1);
Reply(530);
NOption(531,node037,4);
end
procedure node037 begin
Reply(540);
NOption(541,node999,4);
end
procedure node038 begin
//TODO: Float only thing
if (dude_is_male) then
Reply(550);
else
Reply(1130);
if (local_var(LVAR_Been_Node36) > 0) then
NOption(551,node039,4);
NOption(552,node999,4);
end
procedure node039 begin
inc_general_rep(GROOM_HastingsComplement_KarmaGen);
Reply(560);
NOption(561,node999,4);
end
procedure node040 begin
//TODO: Only float
open_captains_door;
if (dude_is_male) then
Reply(570);
else
Reply(1140);
if (GROOM_DudeKnowsPickett == GROOM_DudePickett_NeverHeardOf) then
NOption(571,node041,4);
else
NOption(572,node042,4);
NOption(573,node999,4);
end
procedure node041 begin
Reply(580);
NOption(581,node999,4);
end
procedure node042 begin
Reply(590);
NOption(591,node999,4);
end
procedure node043 begin
//TODO: Float only
Reply(600);
NOption(601,node044,4);
NOption(602,node045,4);
NOption(603,node999,4);
end
procedure node044 begin
been_node44:=1;
Reply(610);
if (been_node45 == 0) then
NOption(611,node045,4);
NOption(612,node999,4);
end
procedure node045 begin
been_node45:=1;
Reply(620);
if (been_node44 == 0) then
NOption(621,node044,4);
NOption(622,node999,4);
end
procedure node046 begin
Reply(630);
//TODO: Caravan ledgers?
NOption(631,node047,4);
NOption(632,node999,4);
end
procedure node047 begin
open_captains_door;
Reply(640);
NOption(641,node999,4);
end
procedure node048 begin
open_captains_door;
Reply(650);
NOption(651,node999,4);
end
procedure node049 begin
open_captains_door;
Reply(660);
NOption(661,node999,4);
end
procedure node050 begin
if (local_var(LVAR_Herebefore) == 0) then begin
set_local_var(LVAR_Herebefore,1);
Reply(670);
end
else begin
if (dude_is_male) then
Reply(671);
else
Reply(672);
end
NOption(673,node015,4);
NOption(674,node021,4);
NOption(675,node999,4);
NOption(676,node999,4);
end
procedure node997 begin //Open door, and setup Bask to force-initiate dialogue
set_map_var(MVAR_Hastings_Bask_Visit,1);
open_captains_door;
end
procedure node998 begin
set_local_var(LVAR_Hostile,2);
end
procedure node999 begin
end