Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
-
- import int GetRootMapData(Map&map,uint index)from"mapdata";
- import void SetRootMapData(Map&map,uint index,int val)from"mapdata";
- import int GetRootMapData(Location&loc,uint index)from"mapdata";
- import void SetRootMapData(Location&loc,uint index,int val)from"mapdata";
- import void AddWaitPlan(Critter&critter,uint waittime)from"npc_common";
- import bool AttackCritter(Critter&attacker,Critter&target,uint minhp)from"npc_common";
- import bool AttackCritter(Critter&attacker,Critter&target)from"npc_common";
- import bool CanUseWeapon(Critter&critter,Item@weapon)from"npc_common";
- import bool CanUseWeapon(Critter&critter,uint proto)from"npc_common";
- import void ClearIllegalFlags(Critter&critter)from"npc_common";
- import bool HasIntelligentBrain(Critter&follower)from"npc_common";
- import void SetCritterIllegalFlag(Critter&critter,int reason)from"npc_common";
- import void SetCritterIllegalFlag(Critter&critter,int location,int reason)from"npc_common";
- import bool HasSameScript(Critter&critter1,Critter&critter2)from"npc_common";
- import bool IsFlaggedAsIllegal(Critter&critter)from"npc_common";
- import bool IsFlaggedAsIllegal(Critter&critter,int location)from"npc_common";
- import bool IsInLocation(Critter&critter,int locationPID)from"npc_common";
- import bool MoveByDir(Critter&critter,uint8 dir,uint steps,bool run)from"npc_common";
- import void MoveRandom(Critter&npc,uint maxDist)from"npc_common";
- import void MoveRandom(Critter&npc,uint maxDist,bool Run)from"npc_common";
- import void MoveRandom(Critter&npc,uint maxDist,uint stepDist,bool Run)from"npc_common";
- import void TransferToNPCMap(Critter&critter)from"npc_common";
- import void UnsetCritterIllegalFlag(Critter&critter)from"npc_common";
- import void UnsetCritterIllegalFlag(Critter&critter,int location)from"npc_common";
- import void UnsetCritterIllegalFlag(uint id,int location)from"npc_common";
- import int GetCritterIllegalFlag(Critter&critter)from"npc_common";
- import int GetCritterIllegalFlag(Critter&critter,int location)from"npc_common";
- import bool HasUnusableWeapon(Critter&critter,uint bag)from"npc_common";
- import bool HasUnusableWeapon(Critter&critter)from"npc_common";
- import bool HasUnusableWeapon(uint crpid,uint bag)from"npc_common";
- import Item@ArmBestWeapon(Critter&critter)from"npc_common";
- import Item@ArmFavoriteWeapon(Critter&critter)from"npc_common";
- import void PutAwayItems(Critter&critter)from"npc_common";
- import void DropAllItems(Critter&critter)from"npc_common";
- import void Heal(Critter&cr)from"npc_common";
- import void TryReportOffense(Critter@cr,Critter@offender,int reputationdrop)from"npc_common";
- import uint GetCrittersWithScript(Map&map,uint16 pid,uint findType,string&scriptName,string&funcDeclaration,array<Critter@>@critters)from"npc_common";
- import uint GetCrittersLoc(Location&loc,uint16 pid,uint findType,array<Critter@>@critters)from"npc_common";
- import uint GetNearGuards(Map@map,uint16 hexX,uint16 hexY,uint radius,array<Critter@>@crits)from"npc_common";
- import uint GetNearFactionGuards(Map@map,uint16 hexX,uint16 hexY,uint radius,uint faction,array<Critter@>@crits)from"npc_common";
- import string GenerateNewName(Critter&critter)from"npc_common";
- import string GetStoredName(Critter&critter)from"npc_common";
- import string GetStoredFirstName(Critter&critter)from"npc_common";
- import bool Flee(Critter&cr)from"npc_common";
- import bool Flee(Critter&cr,bool Run)from"npc_common";
- import void FindFreeHexes(Map@map,uint16 hexX,uint16 hexY,int&num,array<uint16>&coordsX,array<uint16>&coordsY)from"npc_common";
- import bool FindNearestFreeHex(Map@map,uint16 hexX,uint16 hexY,uint16&outX,uint16&outY)from"npc_common";
- import void SetDeleteEvent(Critter&cr,uint time)from"npc_common";
- import void DropDeleteEvent(Critter&cr)from"npc_common";
- import bool AddMiscPlane(Critter&npc,uint priority,uint waitMinute,string@funcName)from"npc_planes";
- import bool AddMiscPlane(Critter&npc,uint priority,int identifier,uint identifierExt,uint waitSecond,string@funcName)from"npc_planes";
- import bool AddWalkPlane(Critter&npc,uint priority,uint16 hexX,uint16 hexY,uint8 dir,bool run,uint cut)from"npc_planes";
- import bool AddWalkPlane(Critter&npc,uint priority,int identifier,uint identifierExt,uint16 hexX,uint16 hexY,uint8 dir,bool run,uint cut)from"npc_planes";
- import bool AddAttackPlane(Critter&npc,uint priority,Critter&target)from"npc_planes";
- import bool AddAttackPlane(Critter&npc,uint priority,uint critId)from"npc_planes";
- import bool AddAttackPlane(Critter&npc,uint priority,Critter&target,int minHp)from"npc_planes";
- import bool AddAttackPlane(Critter&npc,uint priority,uint critId,int minHp)from"npc_planes";
- import bool AddAttackPlane(Critter&npc,uint priority,Critter&target,bool run)from"npc_planes";
- import bool AddPickPlane(Critter&npc,uint priority,uint16 hexX,uint16 hexY,uint16 protoId,uint useItemId,bool toOpen)from"npc_planes";
- import bool AddPickPlane(Critter&npc,uint priority,Item@item,uint useItemId,bool toOpen)from"npc_planes";
- import bool AddPickPlane(Critter&npc,uint priority,Item@item,uint useItemId,bool toOpen,bool run)from"npc_planes";
- import bool AddHealCritterPlane(Critter&npc,uint priority,Critter@target,bool run)from"npc_planes";
- import bool AddDoctorCritterPlane(Critter&npc,uint priority,Critter@target,bool run)from"npc_planes";
- import uint EraseAttackPlane(Critter&npc,uint priority,Critter&target)from"npc_planes";
- import uint EraseAttackPlane(Critter&npc,uint priority,uint critId)from"npc_planes";
- uint GetOwnerId(Map&map)
- {
- return GetRootMapData(map,(5));
- }
- void SetOwnerId(Map&map,uint playerId)
- {
- SetRootMapData(map,(5),playerId);
- }
- void MobIdle(Critter&mob)
- {
- if(Random(0,1)==0)
- mob.MoveRandom();
- mob.Wait((3000)+Random(0,500));
- }
- void MobShowCritter(Critter&mob,Critter&showCrit)
- {
- if(showCrit.Stat[(112)]!=mob.Stat[(112)])
- AddAttackPlane(mob,(50),showCrit);
- }
- bool MobsDead(Map&map,array<uint16>&pids)
- {
- uint num=0;
- for(uint i=0,j=pids.length();i<j;i++)
- num+=map.GetCritters(pids[i],(0x03),null);
- {;};
- return num==0;
- }
- bool MobAttacked(Critter&cr,Critter&attacker)
- {
- cr.SendMessage((1020),attacker.Id,(2));
- return false;
- }
- void MobOnMessage(Critter&cr,Critter&fromCr,int message,int value)
- {
- if(message==(1020))
- AttackCritter(cr,GetCritter(value));
- }
- void check_owner(Critter&cr,int,int,int)
- {
- cr.Say((11),"Owner: "+GetSafePlayerName(GetOwnerId(cr.GetMap())));
- }
- import Location@GetLocationOf(Critter&critter)from"utils";
- import string GetLocationName(uint locId)from"utils";
- import string GetLocationName(Location@loc)from"utils";
- import bool ReadPids(array<int>&out pids,bool removeinvalid)from"utils";
- import void ReadDefines(string@fileName,dictionary&items,array<string>@defines)from"utils";
- import void ReadMsgStrings(string&fileName,dictionary&output)from"utils";
- import bool ParseDefine(const string&in line,string&out spid,int&out id)from"utils";
- import int SkipWhitespaces(const string&in str,int start)from"utils";
- import int SkipNonWhitespaces(const string&in str,int start)from"utils";
- import bool IsParameterTag(string&str)from"utils";
- import string GetParameterString(array<string@>@arr,string¶meter)from"utils";
- import int GetIndexOfString(array<string@>@arr,string&str)from"utils";
- import string GetConcatenatedString(array<string@>@arr,uint startindex,int stopindex)from"utils";
- import string GetMsgStr(int textMsg,uint strNum)from"utils";
- import string GetConditionOfCritter(Critter@cr)from"utils";
- import string GetExtConditionOfCritter(Critter@cr)from"utils";
- import uint GetAllOnlinePlayers(array<Critter@>&out players)from"utils";
- import uint GetAuthenticatedPlayers(array<Critter@>&out players)from"utils";
- import uint GetAuthenticatedPlayers(array<Critter@>&out players,bool ignorePriviledges)from"utils";
- import uint GetNumberOfPlayersOnline()from"utils";
- import void SetTurnBasedAvailability(Location@loc)from"utils";
- import bool IsEncounterMap(Map@map)from"utils";
- import bool IsTown(Map@map)from"utils";
- import uint GetMapType(Map@map)from"utils";
- import void LockDoor(uint x,uint y,Map@map,uint complexity,uint lockid)from"utils";
- import void UnlockDoor(uint x,uint y,Map@map)from"utils";
- import void ClearContainer(Item@container)from"utils";
- import void MoveItemsCritterToCont(Critter&crFrom,Item&contTo,uint specid)from"utils";
- import string GetCritterInfo(Critter&cr)from"utils";
- import bool AddExpTeam(Critter&critter,int xp)from"utils";
- import void ClearEnemyStack(Critter&critter)from"utils";
- import void ClearEnemyStacksOnMap(Map@map)from"utils";
- import bool IsCurrentEnemy(Critter&cr,uint targetId)from"utils";
- import string@GetSafePlayerName(uint id)from"utils";
- import string GetSafePlayerName(uint id,string&onSuccess,string&onError)from"utils";
- import IDateTime@GetCurrentDateTime()from"utils";
- import string GetCurrentDateTimeString()from"utils";
- import string GetCurrentDateTimeString(bool date,bool time)from"utils";
- import Critter@GetMostSkilled(array<Critter@>@group,int skill)from"utils";
- import string GetAuthString(Critter&player)from"utils";
- import string GetAuthString(int accesslevel)from"utils";
- import bool CanRequestHelp(Critter&player)from"utils";
- import void SetRequestedHelp(Critter&player)from"utils";
- import void SetRequestedHelp(Critter&player,int minutes)from"utils";
- import Critter@GetOnlineGM()from"utils";
- import void Preprocess(Critter&player,string&commandString)from"utils";
- import bool IsHumanoid(Critter@cr)from"utils";
- import uint GetGroupIndex(Critter&cr)from"utils";
- import uint GetGroupIndex(int st)from"utils";
- import void SetGroupIndex(Critter&cr,uint val)from"utils";
- import uint GetGroupRank(Critter&cr)from"utils";
- import void SetGroupRank(Critter&cr,uint val)from"utils";
- import uint GetGroupMode(Critter&cr)from"utils";
- import void SetGroupMode(Critter&cr,uint val)from"utils";
- import void SetGroupInfo(Critter&cr,uint faction,uint rank,uint mode)from"utils";
- import void SetGroupInfoPack(Critter&cr,uint packInfo)from"utils";
- import void ClearEvents(Critter&cr)from"utils";
- import void MapRefreshVisible(Map@map,uint hexX,uint hexY,uint radius)from"utils";
- import int GetGvar(uint gvar)from"utils";
- import void SetGvar(uint gvar,uint value)from"utils";
- import int GetLLvar(Location&location,uint llvar)from"utils";
- import int GetLLvar(uint locationId,uint llvar)from"utils";
- import void SetLLvar(Location&location,uint llvar,uint value)from"utils";
- import int GetLMvar(Map&map,uint llvar)from"utils";
- import int GetLMvar(uint mapId,uint llvar)from"utils";
- import void SetLMvar(Map&map,uint llvar,uint value)from"utils";
- import int GetLIvar(Item&item,uint llvar)from"utils";
- import int GetLIvar(uint itemId,uint llvar)from"utils";
- import void SetLIvar(Item&item,uint llvar,uint value)from"utils";
- import int GetLvar(Critter&critter,uint lvar)from"utils";
- import int GetLvar(uint id,uint lvar)from"utils";
- import void SetLvar(Critter&critter,uint lvar,uint value)from"utils";
- import void SetLvar(uint id,uint lvar,uint value)from"utils";
- import int GetUvar(uint uvar,uint key,uint index)from"utils";
- import void SetUvar(uint uvar,uint key,uint index,uint value)from"utils";
- import void SetLLvar(uint locationId,uint llvar,uint value)from"utils";
- import uint GetContainerValue(Item@container)from"utils";
- import uint BaseItemValue(uint pid,bool ammo)from"utils";
- import uint BaseItemValue(uint pid,uint broken,uint det,bool ammo)from"utils";
- import uint BaseItemValue(Item@item)from"utils";
- import uint BaseItemValue(Item@item,uint proc)from"utils";
- import uint BaseSingleItemValue(Item@item)from"utils";
- import uint BaseSingleItemValue(Item@item,uint proc)from"utils";
- import void SetBloodType(Critter@cr)from"utils";
- import string GetBloodType(Critter@cr)from"utils";
- import string GetBloodRandom()from"utils";
- import void LogCommandUsage(Critter&player,string&commandString)from"utils";
- import void DropTimeouts(Critter&cr)from"utils";
- import bool HasItem(Critter@cr,uint pid)from"utils";
- import bool HasSomeWeapon(Critter@cr)from"utils";
- import uint GetBestWeaponSkill(Critter@cr)from"utils";
- import void GiveBag(uint bag,Critter@cr)from"utils";
- import void SetQuestGarbager(uint time,uint playerid,uint locid,uint var,uint val)from"utils";
- import Critter@AddNpc(Map@map,uint16 pid,uint16 x,uint16 y,uint8 dir,uint dialogId,string&script,uint aiPack,uint bagId,uint teamId,bool isMob,uint level)from"utils";
- import Critter@AddNpc(Map@map,uint16 pid,uint16 x,uint16 y,uint8 dir,uint dialogId,string&script,uint aiPack,uint bagId,uint teamId,uint factionRank,uint factionMode,bool isMob,uint level)from"utils";
- import Critter@AddNpc(Map@map,uint16 pid,uint16 x,uint16 y,uint8 dir,array<int>params,uint dialogId,string&script,uint aiPack,uint bagId,uint teamId,bool isMob,uint level)from"utils";
- import Critter@AddNpc(Map@map,uint16 pid,uint16 x,uint16 y,uint8 dir,array<int>params,uint dialogId,string&script,uint aiPack,uint bagId,uint teamId,uint factionRank,uint factionMode,bool isMob,uint level)from"utils";
- import void AddScore(Critter@cr,uint score,uint points)from"utils";
- import bool ReloadWeapon(Critter&cr)from"utils";
- import Item@GetRadio(Critter&cr)from"utils";
- import Item@GetRepairTool(Critter&cr)from"utils";
- import Item@GetEquippedItem(Critter&cr,uint Pid)from"utils";
- import Item@GetEquippedItem(Critter&cr,array<uint>&Pids)from"utils";
- import Item@GetEquippedItemByType(Critter&cr,uint ItemType)from"utils";
- import bool SkillRoll(Critter@cr,int skill,int bonus)from"utils";
- import int SkillCheck(Critter&cr,int skill,int skillused,Item@item,int bonus)from"utils";
- import string SkillName(uint8 skill)from"utils";
- import void ChangeCrTypeSafe(Critter&cr,uint16 crType)from"utils";
- import bool Pickable(Item@item)from"utils";
- import void TransferItemsToContOnMap(Critter&cr,Map@map,int entid,int contpid,int itemtypes)from"utils";
- import void TransferItemsFromContOnMap(Critter&cr,Map@map,int entid,int contpid)from"utils";
- import string IpToString(uint ip)from"utils";
- import void VerboseAction(Critter&cr,string&text)from"utils";
- import void VerboseAction(Critter&cr,Critter&target,string&text)from"utils";
- import void VerboseExperience(Critter&cr,int xpDiff,int levelDiff)from"utils";
- import void SetChosenActions(Critter&cr,array<int>&actions)from"utils";
- import void HexLine(uint16 x0,uint16 y0,uint16 x1,uint16 y1,array<uint16>@xList,array<uint16>@yList)from"utils";
- import void HexCircle(uint16 x0,uint16 y0,uint16 radius,array<uint16>@xList,array<uint16>@yList)from"utils";
- import bool FindPreferredGridApprox(Map&map,uint16&hx,uint16&hy)from"utils";
- import bool StrToInt(string@s,uint64&inout val)from"strtoint";
- import bool StrToInt(string@s,uint&inout val)from"strtoint";
- import bool StrToInt(string@s,uint16&inout val)from"strtoint";
- import bool StrToInt(string@s,uint8&inout val)from"strtoint";
- import bool StrToInt(string@s,int64&inout val)from"strtoint";
- import bool StrToInt(string@s,int16&inout val)from"strtoint";
- import bool StrToInt(string@s,int8&inout val)from"strtoint";
- import int FindInArray(array<int>&arr,int value)from"utils";
- import int FindInArray(array<uint>&arr,uint value)from"utils";
- import int FindInArray(array<uint16>&arr,uint16 value)from"utils";
- import int FindInArray(array<uint8>&arr,uint8 value)from"utils";
- import bool FindInArray(array<int>&arr,int id,int&index)from"utils";
- import bool FindInArray(array<uint>&arr,uint id,int&index)from"utils";
- import bool FindInArray(array<uint8>&arr,uint8 id,int&index)from"utils";
- import int FindInArray(array<string>&arr,string&value)from"utils";
- import int FindInArray(array<string@>@arr,string&value)from"utils";
- import bool Present(int what,array<int>&where)from"utils";
- import bool Present(uint what,array<uint>&where)from"utils";
- import bool Present(uint16 what,array<uint16>&where)from"utils";
- import bool Present(string&what,array<string>&where)from"utils";
- import bool Present(string&what,array<string@>@where)from"utils";
- import uint CreateLocationForGroup(Critter&player,uint16 pid,uint16 worldX,uint16 worldY,array<Critter@>&)from"utils";
- import bool FindFirstFreeHex(Map@map,uint16&x,uint16&y,uint8 dir,uint16 maxSteps)from"utils";
- import bool FindNearestFreeHex(Map&map,uint16&x,uint16&y,uint radius)from"utils";
- import bool GetItemCoordinates(Item&item,uint&mapID,uint16&x,uint16&y)from"utils";
- import bool ItemOnHex(uint16 pid,Map@map,uint16 x,uint16 y)from"utils";
- import void PrintCallstack()from"utils";
- import void PrintCallstack(int level)from"utils";
- import bool LocationHasCritters(Location&loc,uint findType)from"utils";
- import uint LocationGetCritters(Location&loc,uint findType,array<Critter@>@critters)from"utils";
- import bool LocationHasItems(Location&loc,uint16 protoId)from"utils";
- import uint LocationGetItems(Location&loc,uint16 protoId,array<Item@>@items)from"utils";
- import void LocationDeleteItems(Location&loc,uint16 protoId)from"utils";
- import bool IsDisposableEncounter(Location@loc)from"utils";
- shared class CPosition
- {
- uint x;
- uint y;
- uint dir;
- };
- shared interface IRect
- {
- bool IsWithin(Critter&cr);
- };
- shared class Rect:IRect
- {
- uint x1;
- uint y1;
- uint x2;
- uint y2;
- Rect(uint x1,uint y1,uint x2,uint y2)
- {
- this.x1=x1;
- this.y1=y1;
- this.x2=x2;
- this.y2=y2;
- }
- bool IsWithin(Critter&cr)
- {
- return((cr.HexX>=this.x1&&cr.HexX<=this.x2)&&(cr.HexY>=this.y1&&cr.HexY<=this.y2));
- }
- };
- shared interface IDateTime
- {
- uint16 get_Year();
- uint16 get_Month();
- uint16 get_DayOfWeek();
- uint16 get_Day();
- uint16 get_Hour();
- uint16 get_Minute();
- uint16 get_Second();
- uint16 get_Milliseconds();
- string@ToString();
- };
- uint[][]PositionDirs=
- {
- {0},
- {1,4,3,2,1,0,5,2,3,4,5,0,1},
- {1,5,0,1,2,3,4,1,0,5,4,3,2},
- {1,4,2},
- {1,5,1},
- {2,1,2,0,0,1,2,3,3,0,0,4,5,3,3,4,5},
- {2,1,2,4,5},
- {2,4,4,0,0,4,4,3,3,0,0,2,2,3,3,2,2},
- {2,5,5,0,0,5,5,3,3,0,0,1,1,3,3,1,1},
- {2,1,2,0,0,0,0,1,2,3,3,3,3,0,0,0,0,4,5,3,3,3,3,4,5}
- };
- shared interface IZone
- {
- uint GetX();
- uint GetY();
- uint GetTerrain();
- uint8 GetFactor();
- void SetFactor(uint8 factor);
- int GetValue();
- void SetValue(int val);
- void AddValue(int val);
- void SubValue(uint val);
- bool ContainsFlag(uint flag);
- void SetQuantity(uint group,uint quantity);
- void ChangeQuantity(uint group,int mod);
- uint GetBaseQuantity(uint group);
- uint GetQuantity(uint group);
- uint GetLocationPids(array<uint16>&pids);
- };
- import IZone@GetZone(uint wx,uint wy)from"worldmap";
- shared class Entire
- {
- int Number;
- uint16 HexX;
- uint16 HexY;
- uint8 Direction;
- };
- uint ParseEntires(Map&map,array<Entire>&entires,int number)
- {
- uint oldCount=entires.length();
- uint count=map.CountEntire(number);
- entires.resize(oldCount+count);
- for(uint i=0;i<count;i++)
- {
- Entire@ent=entires[oldCount+i];
- if(map.GetEntireCoords(number,i,ent.HexX,ent.HexY,ent.Direction)==false)
- return 0;
- ent.Number=number;
- }
- return count;
- }
- bool IsEntireFree(uint mappid,int number)
- {
- Map@map=GetMapByPid(mappid,0);
- return IsEntireFree(map,number);
- }
- bool IsEntireFree(Map&map,int number)
- {
- uint16 x,y;
- x=0;
- y=0;
- return GetEntireFreeHex(map,number,x,y);
- }
- bool GetEntireFreeHex(Map&map,int number,uint16&hx,uint16&hy,uint skip=0)
- {
- uint count=map.CountEntire(number);
- for(uint i=skip;i<count;i++)
- {
- if(map.GetEntireCoords(number,i,hx,hy)&&map.IsHexPassed(hx,hy))
- return true;
- }
- if(hx==0||hy==0||hx>=map.GetWidth()-1||hy>=map.GetHeight()-1)
- return false;
- for(uint i=0;i<count;i++)
- {
- if(map.GetEntireCoords(number,i,hx,hy))
- {
- for(int x=-1;x<=1;x++)
- {
- for(int y=-1;y<=1;y++)
- {
- if(x==0&&y==0)
- continue;
- if(__MapHexagonal)
- {
- if((hx%2)==1&&((x==-1&&y==1)||(x==1&&y==1)))
- continue;
- if((hx%2)==0&&((x==-1&&y==-1)||(x==1&&y==-1)))
- continue;
- }
- if(map.IsHexPassed(hx+x,hy+y))
- {
- hx+=x;
- hy+=y;
- return true;
- }
- }
- }
- }
- }
- return false;
- }
- bool GetNearEntire(Map&map,int number,uint16&hx,uint16&hy)
- {
- uint16 hxBase=hx;
- uint16 hyBase=hy;
- array<Entire>entires;
- uint count=ParseEntires(map,entires,number);
- if(count==0)
- return false;
- hx=entires[0].HexX;
- hy=entires[0].HexY;
- for(uint i=1;i<count;i++)
- {
- Entire@ent=entires[i];
- if(GetDistantion(hxBase,hyBase,ent.HexX,ent.HexY)<GetDistantion(hxBase,hyBase,hx,hy))
- {
- hx=ent.HexX;
- hy=ent.HexY;
- }
- }
- return true;
- }
- bool GetNearEntire(Map&map,int number,uint16&hx,uint16&hy,uint8&dir)
- {
- uint16 hxBase=hx;
- uint16 hyBase=hy;
- array<Entire>entires;
- uint count=ParseEntires(map,entires,number);
- if(count==0)
- return false;
- hx=entires[0].HexX;
- hy=entires[0].HexY;
- dir=entires[0].Direction;
- for(uint i=1;i<count;i++)
- {
- Entire@ent=entires[i];
- if(GetDistantion(hxBase,hyBase,ent.HexX,ent.HexY)<GetDistantion(hxBase,hyBase,hx,hy))
- {
- hx=ent.HexX;
- hy=ent.HexY;
- dir=ent.Direction;
- }
- }
- return true;
- }
- uint __GetColor(int r,int g,int b,int a=0xFF)
- {
- r=(((r)>(255))?(255):(((r)<(0))?(0):(r)));
- g=(((g)>(255))?(255):(((g)<(0))?(0):(g)));
- b=(((b)>(255))?(255):(((b)<(0))?(0):(b)));
- a=(((a)>(255))?(255):(((a)<(0))?(0):(a)));
- return(uint(((a)<<24)|(((r)&0xFF)<<16)|(((g)&0xFF)<<8)|((b)&0xFF)));
- }
- array<uint16>zombPids={257};
- void r_SpawnLoc(Critter&player,Critter@npc)
- {
- uint zoneX=Random(39,41);
- uint zoneY=Random(39,41);
- uint wx=zoneX*__GlobalMapZoneLength;
- uint wy=zoneY*__GlobalMapZoneLength;
- wx+=Random(0,__GlobalMapZoneLength);
- wy+=Random(0,__GlobalMapZoneLength);
- array<uint16>locationIds={189};
- uint num=locationIds.length;
- uint16 locPid=locationIds[Random(0,num-1)];
- Critter@[]crits={player};
- int loc=CreateLocation(locPid,wx,wy,crits);
- if(loc==0)
- return;
- player.SetKnownLoc(true,loc);
- GameVar@locidv=GetLocalVar((16272),player.Id);
- locidv=loc;
- Location@location=GetLocation(loc);
- location.Color=((uint((((120))<<24)|(((255)&0xFF)<<16)|(((128)&0xFF)<<8)|((0)&0xFF))));
- location.Update();
- if(player.Mode[(516)]==(2))
- SetTurnBasedAvailability(location);
- location.AutoGarbage=false;
- array<Map@>maps;
- uint mapcount=location.GetMaps(maps);
- for(uint c=0;c<mapcount;c++)
- {
- maps[c].SetScript(null);
- maps[c].SetEvent((6),null);
- maps[c].SetEvent((8),null);
- }
- Map@map=GetLocation(loc).GetMapByIndex(0);
- SetOwnerId(map,player.Id);
- bool spawned=false;
- while(!spawned)
- {
- array<Entire>entires;
- ParseEntires(map,entires,666);
- Entire@ent=(entires[Random(0,entires.length()-1)]);
- uint16 hx=ent.HexX;
- uint16 hy=ent.HexY;
- map.GetHexCoord(ent.HexX,ent.HexY,hx,hy,Random(0,359),Random(10,30));
- for(uint i=0,j=Random(1,1);i<j;i++)
- {
- uint8 dir=Random(0,5);
- uint step=Random(1,5);
- map.MoveHexByDir(hx,hy,dir,step);
- uint16 npcPid=zombPids[Random(0,zombPids.length()-1)];
- int[]params=
- {
- (107),365,
- (84),(-2),
- (104),(23286)
- };
- Critter@zomb=map.AddNpc(npcPid,hx,hy,Random(0,5),params,null,"quest_bos1@critter_init");
- if((@zomb!=null))
- {
- spawned=true;
- }
- }
- }
- SetQuestGarbager(12*60,player.Id,loc,(16271),(4));
- }
- void r_DeleteLoc(Critter&player,Critter@npc)
- {
- GameVar@var=GetLocalVar((16272),player.Id);
- DeleteLocation(var.GetValue());
- }
- void critter_init(Critter&cr,bool firstTime)
- {
- cr.StatBase[(84)]=(-2);
- cr.SetEvent((2),"_zombDead");
- cr.SetEvent((16),"_zombAttacked");
- cr.SetEvent((18),"_zombOnMessage");
- cr.SetEvent((0),"_zombIdle");
- cr.SetEvent((4),"_zombShowCritter");
- (cr.ModeBase[(534)]=cr.Mode[(534)]|((0x00000004)));
- }
- void _zombIdle(Critter&mob)
- {
- MobIdle(mob);
- }
- void _zombShowCritter(Critter&mob,Critter&showCrit)
- {
- if((((showCrit.Mode[(534)]&((0x00000020)))!=0))||showCrit.IsPlayer())
- AddAttackPlane(mob,(50),showCrit);
- }
- void _zombDead(Critter&cr,Critter@killer)
- {
- Map@map=cr.GetMap();
- if(MobsDead(map,zombPids))
- {
- GameVar@var=GetLocalVar((16271),GetOwnerId(map));
- var=(2);
- }
- }
- bool _zombAttacked(Critter&cr,Critter&attacker)
- {
- return MobAttacked(cr,attacker);
- }
- void _zombOnMessage(Critter&cr,Critter&fromCr,int message,int value)
- {
- MobOnMessage(cr,fromCr,message,value);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement