#setbooster
Explore tagged Tumblr posts
Photo
Our Summer Holi-Deals continue! Buy 2 AFR Set Boosters and get 1 pack free! #mtg #setbooster
0 notes
Photo

I couldn't decide what to play today so I went 5C pile 🤤🤤🤤 • • • Opening these tonight at 6pm 💜 #MTGMidnight #beagle • • • There will be WHEEL SPIN GIVEAWAYS tonight 😍😍😍 (follow my tw!tch now) • • • #mtgmakeup #makeupthegathering #graphicliner #graphiceyeliner #5color #5colors #mtgcards #mtgpackopening #tradingcardgame #mtggamergirl #zbexx #twitchcommunity #seeyoutonight #dogkisses #setbooster #midnighthunt #magicthegathering #MTGInnistrad #nerdtshirt #veryfreakygirl #nerdythings (at Addictive Behaviors) https://www.instagram.com/p/CUDpDAdBnk4/?utm_medium=tumblr
#mtgmidnight#beagle#mtgmakeup#makeupthegathering#graphicliner#graphiceyeliner#5color#5colors#mtgcards#mtgpackopening#tradingcardgame#mtggamergirl#zbexx#twitchcommunity#seeyoutonight#dogkisses#setbooster#midnighthunt#magicthegathering#mtginnistrad#nerdtshirt#veryfreakygirl#nerdythings
2 notes
·
View notes
Photo

MTG Strixhaven School of Mages Set Booster cards: Art Series 63 Ephemerate 004 Inkling Token/MTG Store Locator featuring Fblthp from Totally Lost 018 Negate [Uncommon Mystical Archive Full Art] 030 Star Pupil [FOIL] (*reads flavor text* Geez, someone's an overachiever 🙄) 179 Double Major [Rare] 238 Spirit Summoning [Lesson] 015 Dueling Coach [Uncommon] (Will Strixhaven beat Hogwarts in the Triwizard Tournament?) 038 Burrog Befuddler 088 Tenured Inkcaster [Uncommon] (#interviewwiththevampire moment: So is it true that the pen IS mightier than the sword?) 135 Karok Wrangler [Uncommon] 141 Reckless Amplimancer 208 Needlethorn Drake 251 Biblioplex Assistant 369 Island #magic #gathering #mtg #tcg #strixhaven #schoolofmages #notmymomsbasmentgaming #setbooster #arcavios #zimonewola #quandrix #lorehold #witherbloom #prismari #silverquil #oriq #chooseexcellence #mysticalarchive #artseries #harrypotter #hogwarts #mtgnewage #fblthp #triwizardtournament https://www.instagram.com/p/COCa2eJjncr/?igshid=10a01e8rsjylq
#interviewwiththevampire#magic#gathering#mtg#tcg#strixhaven#schoolofmages#notmymomsbasmentgaming#setbooster#arcavios#zimonewola#quandrix#lorehold#witherbloom#prismari#silverquil#oriq#chooseexcellence#mysticalarchive#artseries#harrypotter#hogwarts#mtgnewage#fblthp#triwizardtournament
0 notes
Photo

In stock! #EastSideMags #comics #comicbooks #cards #magicthegathering #wotc #mtg #mtgzr #setboosters #play #game #gamer #gamers #tcg #fun #community #montclairnj #montclaircenter #montclairtogether #love (at East Side Mags) https://www.instagram.com/p/CHOYo99B_K5/?igshid=mmeu493oz45w
#eastsidemags#comics#comicbooks#cards#magicthegathering#wotc#mtg#mtgzr#setboosters#play#game#gamer#gamers#tcg#fun#community#montclairnj#montclaircenter#montclairtogether#love
0 notes
Photo

Micas para carpeta #ultrapro #mtgkaldheim bundles #modernhorizons2 boosters y #strixhaven setboosters y mas los esperamos #intergamesweb (en Intergames) https://www.instagram.com/p/CQzSh2-rSAr/?utm_medium=tumblr
0 notes
Text
#15: Power Ups
The original source racer had power ups, their place holders can be seen through the map showing the obsolete icon because they're defined in our .fgd file:
Open up the .fgd file and add in the definition for power ups:
@PointClass base(Targetname, Angles) studio("models/pickup/pickup.mdl") = race_powerup : "Gives player a random powerup." [ ]
Next we need to make sure the power up models are in our models folder copy the models\pickup folder from the source racer client files and copy it into the mod models folder.
Next in Hammer open up our turtlebeach map and click the entity tool and add an entity and change its Class to race_powerup you should then see the animated powerup (You may need to restart Hammer after editing the fgd and copying the models):
The existing powerup entities aren't working though because it looks like they've been decompiled as brush entities by the decompiler. Simply double click on the entity then change to a different class, click apply, change back to race_powerup then click apply to get them working. There are a lot of power ups on this map so it will take some time, I think too many to be honest:
Create the class to handle the race_powerup entity called ar_powerup.cpp:
#include "cbase.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" class CAR_Powerup : public CBaseAnimating { public: DECLARE_CLASS(CAR_Powerup, CBaseAnimating); DECLARE_DATADESC(); void Precache(void); void Spawn(void); void PowerupThink(void); virtual void StartTouch(CBaseEntity *pOther); }; LINK_ENTITY_TO_CLASS(race_powerup, CAR_Powerup); BEGIN_DATADESC(CAR_Powerup) DEFINE_ENTITYFUNC(StartTouch), END_DATADESC() void CAR_Powerup::Precache() { BaseClass::Precache(); PrecacheModel("models/pickup/pickup.mdl"); } void CAR_Powerup::Spawn(void) { Precache(); BaseClass::Spawn(); SetModel("models/pickup/pickup.mdl"); ResetSequence(LookupSequence("Idle")); SetThink(&CAR_Powerup::PowerupThink); SetNextThink(gpGlobals->curtime + 0.1f); AddSolidFlags(FSOLID_NOT_SOLID | FSOLID_TRIGGER); VPhysicsInitNormal(SOLID_BBOX, GetSolidFlags(), false); } void CAR_Powerup::PowerupThink() { StudioFrameAdvance(); DispatchAnimEvents(this); SetNextThink(gpGlobals->curtime + 0.1f); } void CAR_Powerup::StartTouch(CBaseEntity *pOther) { DevMsg("POWERUP START TOUCH TOUCHED\n"); BaseClass::StartTouch(pOther); }
To creaate this class I searched and studied several existing pieces of the SDK. The first issue was the model wasn't visible, I studied CItem_AmmoCrate and copied bits and pieces regarding SetModel, ResetSequence and setting up a think event to animate it.
Then by studying a combination of several classes: C_Gib, CSatchelCharge, CItemSuit and CItem and hours of testing I worked out how to set-up the StartTouch event. The kicker that I was missing until the end was the call to VPhysicsInitNormal without it, it seems Touch events won't work.
After a compile/run your powerups will be visible, animating and responding to the touch event.
Now we need to try and give the airboat a speed boost when it touches a powerup. Firstly we want to make sure this happens when only the airboat touches it:
void CAR_Powerup::StartTouch(CBaseEntity *pOther) { if(stricmp(pOther->GetClassname(), "prop_vehicle_airboat") == 0) { DevMsg("POWERUP TOUCH: %s\n", pOther->GetClassname()); } BaseClass::StartTouch(pOther); }
Now we need to retrieve the vehicle:
void CAR_Powerup::StartTouch(CBaseEntity *pOther) { if(stricmp(pOther->GetClassname(), "prop_vehicle_airboat") == 0) { DevMsg("POWERUP TOUCH: %s\n", pOther->GetClassname()); CBaseServerVehicle *pServerVehicle = dynamic_cast<CBaseServerVehicle *>(pOther->GetServerVehicle()); } BaseClass::StartTouch(pOther); }
It was at this point I remembered that the HL2 jeep had a boost option, so let's search for that and see what we find, if you search for Boost( you'll find CFourWheelVehiclePhysics::SetBoost( float flBoost ). Which I'm assuming if you give it a float value will give the airboat a boost. Now how do we call it from our CBaseServerVehicle instance? Right clicking and looking at call hierarchy shows that it isn't called anywhere in the SDK.
So with no existing examples we'll have to create our own call. Let's see what creates an instance of CFourWheelVehiclePhysics. if you search for **CFourWheelVehiclePhysics *** one of the results is actually in the airboat class:
void CPropAirboat::UpdateGauge() { CFourWheelVehiclePhysics *pPhysics = GetPhysics(); int speed = pPhysics->GetSpeed(); int maxSpeed = pPhysics->GetMaxSpeed(); float speedRatio = clamp( (float)speed / (float)maxSpeed, 0, 1 ); SetPoseParameter( "Gauge", speedRatio ); }
If you see the CPropAirboat class for GetPhysics() it's not a method of this class. Airboat inherits CPropVehicleDriveable:
class CPropAirboat : public CPropVehicleDriveable
And this is class that defines GetPhysics() so we need to create an instance of CPropVehicleDriveable which we can cast from our CBaseServerVehicle instance:
CPropVehicleDriveable *pDrivable = dynamic_cast<CPropVehicleDriveable*>(pServerVehicle);
Now that we have CPropVehicleDriveable instance we can access physics:
CFourWheelVehiclePhysics *pPhysics = pDrivable->GetPhysics();
For now let's just access the speed of the airboat and output it as a DevMsg so putting it all together:
void CAR_Powerup::StartTouch(CBaseEntity *pOther) { if(stricmp(pOther->GetClassname(), "prop_vehicle_airboat") == 0) { DevMsg("POWERUP TOUCH: %s\n", pOther->GetClassname()); CBaseServerVehicle *pServerVehicle = dynamic_cast<CBaseServerVehicle *>(pOther->GetServerVehicle()); CPropVehicleDriveable *pDrivable = dynamic_cast<CPropVehicleDriveable*>(pServerVehicle); if (pServerVehicle) { DevMsg("POWERUP SERVER VEHICLE\n"); if (pDrivable) { DevMsg("POWERUP DRIVABLE VEHICLE\n"); CFourWheelVehiclePhysics *pPhysics = pDrivable->GetPhysics(); int speed = pPhysics->GetSpeed(); DevMsg("SPEED: %d\n", speed); } } } BaseClass::StartTouch(pOther); }
After a compile/run it didn't work, I only saw the messages up to POWERUP SERVER VEHICLE which means our cast from a CBaseServerVehicle to CPropVehicleDriveable didn't work.
Searching the codebase for examples of creating instances of CPropVehicleDriveable (foreach for **CPropVehicleDriveable ***) I found an example of just using the base entity and casting it as one:
CPropVehicleDriveable *CFourWheelServerVehicle::GetFourWheelVehicle( void ) { return (CPropVehicleDriveable *)m_pVehicle; }
So all we need to do is cast our BaseEntity to a CPropVehicleDriveable:
void CAR_Powerup::StartTouch(CBaseEntity *pOther) { if(stricmp(pOther->GetClassname(), "prop_vehicle_airboat") == 0) { DevMsg("POWERUP TOUCH: %s\n", pOther->GetClassname()); CPropVehicleDriveable *pDrivable = dynamic_cast<CPropVehicleDriveable*>(pOther); if (pDrivable) { CFourWheelVehiclePhysics *pPhysics = pDrivable->GetPhysics(); int speed = pPhysics->GetSpeed(); DevMsg("SPEED: %d\n", speed); } } BaseClass::StartTouch(pOther); }
After a compile/run when you drive over a powerup it now tells you your speed! So the process for Source SDK mod development is becoming clearer to me now. Whatever you want to do, first think of a related existing method, search for it, try to understand it, copy and modify it to your needs.
Without know if it would work I then called pPhysics->SetBoost(1000) and gave it a value of 1000 but nothing happened. I think it may have something to do with enabling boost, I search the code for HasBoost() and found this line in CFourWheelVehiclePhysics::Think:
m_nHasBoost = vehicleData.engine.boostDelay;
It determines if boost is enable from the vehicle data which I think comes from the vehicle definition text file (Just a hunch). After search for the vehicle scripts I found CFourWheelVehiclePhysics::Initialize which is passed a vehicle script which then retrieves the data from:
solid_t solid; vehicleparams_t vehicle; if (!ParseVehicleScript( pVehicleScript, solid, vehicle )) { UTIL_Remove(m_pOuter); return false; }
I then tracked this down to CPropVehicle::Spawn( ):
void CPropVehicle::Spawn( ) { CFourWheelServerVehicle *pServerVehicle = dynamic_cast<CFourWheelServerVehicle*>(GetServerVehicle()); m_VehiclePhysics.SetOuter( this, pServerVehicle ); // NOTE: The model has to be set before we can spawn vehicle physics BaseClass::Spawn(); SetCollisionGroup( COLLISION_GROUP_VEHICLE ); m_VehiclePhysics.Spawn(); if (!m_VehiclePhysics.Initialize( STRING(m_vehicleScript), m_nVehicleType )) return; SetNextThink( gpGlobals->curtime ); m_vecSmoothedVelocity.Init(); }
After player around back in my power up code, I attempted to try and get access the data mapped in the physics object for the engine data:
IPhysicsVehicleController *pPhysicsVehicle = pPhysics->GetVehicle(); vehicleparams_t vehicleParams = pPhysicsVehicle->GetVehicleParams(); DevMsg("MAX SPEED: %.2f\n", vehicleParams.engine.maxSpeed);
To my surprise this working but gave me a value of:
MAX SPEED: 598.44
I'm guessing this is pixels per second or something, I then came across this in CFourWheelVehiclePhysics::Think():
float carSpeed = fabs( INS2MPH( carState.speed ) );
Which means that value is inches per second. I then doubled it:
vehicleParams.engine.maxSpeed *= 2;
But it wouldn't store it and each time I drove over the pickup it showed me the doubled amount which means it didn't update the physics object. I then tried as hard as I could do find other ways of updating maxSpeed directly on the member variable itself but couldn't get anywhere. Then I discovered the winning ticket GetVehicleParamsForChange() it's basically what we were doing before but method that allows us to alter the values:
void CAR_Powerup::StartTouch(CBaseEntity *pOther) { if(stricmp(pOther->GetClassname(), "prop_vehicle_airboat") == 0) { DevMsg("POWERUP TOUCH: %s\n", pOther->GetClassname()); CPropVehicleDriveable *pDrivable = dynamic_cast<CPropVehicleDriveable*>(pOther); if (pDrivable) { CFourWheelVehiclePhysics *pPhysics = pDrivable->GetPhysics(); IPhysicsVehicleController *pPhysicsVehicle = pPhysics->GetVehicle(); vehicleparams_t &vehicleParams = pPhysicsVehicle->GetVehicleParamsForChange(); vehicleParams.engine.maxSpeed *= 2; DevMsg("MAX SPEED: %.2f\n", vehicleParams.engine.maxSpeed); } } BaseClass::StartTouch(pOther); }
After a compile/run the Airboat does indeed double its speed but interestly can't go any faster than 64 mph even though I keep collecting pickups. I put this down to friction and horsepower. Friction slows the car down and horsepower is how much grunt the vehicle has, even though its max speed is astronmical after a few pickups it won't even reach that speed if it doesn't have an engine with the power to do it. Max speed is just limit.
I'll post a video showing the speed increase.
0 notes
Photo

Greetings fellow magicians. Follow me as we enter in a realm of wizards and witches and mystical arts galore as we step into Arcavios and it's esteemed university... Strixhaven! What? Were you expecting Hogwarts? Anyway, I checked out for a brief moment the new LGS in Belleview called Not My Mom's Basement Gaming and sadly I had no deck or two to play, so I took home the Draft Booster and Set Booster of Strixhaven School of Mages. Peer into the next few posts and see what I have unraveled. #expectopatronum! #magic #gathering #mtg #tcg #strixhaven #schoolofmages #notmymomsbasmentgaming #setbooster #draftbooster #arcavios #zimonewola #quandrix #lorehold #witherbloom #prismari #silverquil #oriq #chooseexcellence #harrypotter #hogwarts #mtgnewage https://www.instagram.com/p/COCYZ60DFyD/?igshid=13g5tnep1tsux
#expectopatronum#magic#gathering#mtg#tcg#strixhaven#schoolofmages#notmymomsbasmentgaming#setbooster#draftbooster#arcavios#zimonewola#quandrix#lorehold#witherbloom#prismari#silverquil#oriq#chooseexcellence#harrypotter#hogwarts#mtgnewage
0 notes
Photo

Let's get down to what's on the List.....or you could just watch my newest YT upload cracking Zendikar Rising Set Boosters: https://youtu.be/uR0KreI2iV0 #MTGZendikar #mtgznr #setboosters #setbooster #zendikarrising #mtg #magicthegathering #beagle #mtgdog #mtgdogs #beagles (at Addictive Behaviors) https://www.instagram.com/p/CFKyyoTHJ4n/?igshid=d28p56cndq9a
#mtgzendikar#mtgznr#setboosters#setbooster#zendikarrising#mtg#magicthegathering#beagle#mtgdog#mtgdogs#beagles
0 notes