Weredragons and Ettins are pettable now.

Befriended monsters activate their death specials, if they have any.
Add colored icons to monster tags to denote bosses and friends.
Minigames will be part of a second free DLC update.
This commit is contained in:
Mari the Deer 2020-11-07 13:54:21 +01:00
commit 8b7656cef3
10 changed files with 58 additions and 13 deletions

View file

@ -43,10 +43,10 @@
- **Pest Control**: Obtain 100% kills in 30 maps.
- **Premium Detective**: Obtain 100% secrets in 30 maps.
- **Return to Sender**: Kill 50 enemies with parried projectiles.
- **Robutts Die Twice**: Reenact your favorite Souls-like.
- **Robutts Die Twice**: Die and reboot two times in the same map.
- **Salutations**: Greet another player.
- **Sayonara, Scumbag**: Wave at a dying enemy 20 times.
- **Shaped Like A Friend**: Befriend 50 Cacodemons with headpats.
- **Shaped Like A Friend**: Befriend 50 Cacodemons, Weredragons or Ettins with headpats.
- **Sharing Is Caring**: Share items in multiplayer 50 times.
- **Shockmaster**: Perform 50 Biospark combos.
- **Slam Your Balls**: Land 100 Lead Ball crits.
@ -73,3 +73,12 @@
- **High Noon**: Land 6 killing shots in a single Puntzer Beta reload.
- **The Most Silent Takedown**: Kill 50 enemies with the Ray-Khom primary without alerting anyone else.
- **You Gained Brouzouf**: Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot.
### DLC Gameset achievements:
- **Tetromination**: Complete a full game of Tetris.
- **Danny Won, Yeah**: Complete a full game of Pong.
- **Tsuchinoko Real**: Complete a full game of Snake.
- **Master of Platformers**: Complete a full game of Demo Land Adventure.
- **Master of SHMUPs**: Complete a full game of Interstellar Demolitionist.
- **Master of RPGs**: Complete a full game of Demolition Quest.

View file

@ -20,7 +20,14 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after
- **[Heretic]** Doomguy Action Figure *("Oh, he gets one too?")*
- **[Hexen]** Obelisk of the Golden Vale *("I puked out my guts when I touched that fucking thing")*
* ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff**
* ***(Maybe)* Minigames for the Demolitionist Menu (pong, tetris, some sort of basic platformer or shmup)**
* **DLC Gameset:**
- Tetris
- Pong
- Snake
- ... maybe other small games
- **[Doom]** Demo Land Adventure (platformer with shooty gameplay)
- **[Heretic]** Interstellar Demolitionist (a somewhat simple SHMUP, kinda Touhou styled)
- **[Hexen]** Demolition Quest (a JRPG, kinda like early FF / BoF)
* **Mothgirl summon for Lämp easter egg**
* **Ibuki companion add-on *(w/ optional "stream friendly" clothing)***
* **Saya model, for scenes or something idk *(maybe a companion add-on too)***

View file

@ -10,17 +10,17 @@
- See if I can add those damn swimming anims.
- Beg more artists for intermission fanart.
- Stuff to maybe add during this stage: Explodium Guns akimbo, Quick grenade.
- Collectables. Froggy Chair was only the beginning.
- Collectibles. Froggy Chair was only the beginning.
**Cutie Robutt Adventures:**
- Going Gold™.
- Think about the future. There are lots of things I could do now *(see FuturePlans.md)*.
- Maybe try to do the fancy titlemap now, mod trailer, etc.
**Extra Funtimes:**
- DLC weapons.
- DLC minigames.
**LODS OF LORE:**
@ -29,7 +29,7 @@
**Funny Fellas:**
- Monster/decoration replacement packs. All of it modelled and tweaked to fit the style and theme of the mod. Expect enhanced enemy behaviour, not gonna keep it "vanilla".
- Monster/decoration replacement packs. All of it modeled and tweaked to fit the style and theme of the mod. Expect enhanced enemy behavior, not gonna keep it "vanilla".
- Porting weapons to Hideous Destructor as a meme.
**Fight for the Front and freedom. Move out!:**

View file

@ -12,7 +12,7 @@
- Mod trailer video (doubt I'd be able to, I might ask someone instead)
- Rewrite the entire Demolitionist Menu code from the ground up to be more easily extensible and adapt to any window size
- Hexen key and puzzle item models?
- Minigames?
- DLC gameset
**Very extra things for the future:**

View file

@ -1,2 +1,2 @@
[default]
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r608 \cu(Sat 7 Nov 10:27:26 CET 2020)";
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r608 \cu(Sat 7 Nov 13:54:21 CET 2020)";

View file

@ -1182,7 +1182,7 @@ Class SWWMHandler : EventHandler
{
if ( (e.Thing.IsFriend(e.DamageSource) || SWWMUtility.IsCivilian(e.DamageSource)) )
lastcombat = AddOneliner("friendhit",1,10);
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,(e.DamageSource.bBOSS||e.DamageSource.bBOSSDEATH)?2:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,e.DamageSource.bBOSS?2:4) && !SWWMHDoomHandler.IsCuteGirl(e.DamageSource) ) // [HDoom] don't shout at the girls
lastcombat = AddOneliner("gethit",1,15);
}
highesttic = gametic;
@ -1221,7 +1221,7 @@ Class SWWMHandler : EventHandler
{
if ( e.Thing.IsFriend(src) || SWWMUtility.IsCivilian(e.Thing) )
lastcombat = AddOneliner("friendkill",1,5);
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,(e.Thing.bBOSS||e.Thing.bBOSSDEATH)?2:5) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
else if ( (!lastcombat || (gametic > lastcombat+100)) && !Random[DemoLines](0,e.Thing.bBOSS?2:5) && !SWWMHDoomHandler.IsCuteGirl(e.Thing) ) // [HDoom] don't shout at the girls
lastcombat = AddOneliner("scorekill",1,15);
}
}
@ -1411,9 +1411,10 @@ Class SWWMHandler : EventHandler
e.Thing.A_SetSize(20,40);
e.Thing.bNOBLOOD = true;
}
else if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing) )
else if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing)
|| SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) )
{
// you can pet the dog, and you can also pet the caco
// you can pet the dog, and you can also pet the caco (and friends)
let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos);
hp.target = e.Thing;
}

View file

@ -734,6 +734,8 @@ Class SWWMStatusBar : BaseStatusBar
if ( StringTable.Localize("$SWWM_LEGPREFIX") == "R" ) tag = tag..StringTable.Localize("$SWWM_LEG");
else tag = StringTable.Localize("$SWWM_LEG")..tag;
}
if ( targ.bBOSS ) tag = "\cx★\c- "..tag.." \cx★\c-";
if ( targ.bFRIENDLY ) tag = "\cg♥\c- "..tag.." \cg♥\c-";
int mtime = 35;
if ( thesight && (targ.lasthealth > 0) ) mtime += 105;
double alph = clamp(((targ.updated+mtime)-level.maptime)/35.,0.,1.);

View file

@ -3213,6 +3213,14 @@ Class SWWMGesture : SWWMWeapon
t.bCOUNTKILL = false;
level.total_monsters--;
}
if ( t.special && !(t.ActivationType&THINGSPEC_NoDeathSpecial) )
{
Actor whomst = level.actownspecial?t:self;
if ( t.ActivationType&THINGSPEC_ThingActs ) whomst = t;
else if ( t.ActivationType&THINGSPEC_TriggerActs ) whomst = self;
level.ExecuteSpecial(t.special,whomst,null,false,t.args[0],t.args[1],t.args[2],t.args[3],t.args[4]);
t.special = 0;
}
t.bFRIENDLY = true;
if ( deathmatch )
t.SetFriendPlayer(player);

View file

@ -789,6 +789,7 @@ Class SWWMCombatTracker : Thinker
int tcnt;
double height;
transient CVar funtags, maxdist;
bool bBOSS, bFRIENDLY;
void UpdateTag()
{
@ -827,7 +828,7 @@ Class SWWMCombatTracker : Thinker
}
else t.lasthealth = t.maxhealth = target.health;
t.updated = int.min;
t.height = t.mytarget.height;
t.height = target.height;
t.pos = level.Vec3Offset(target.pos,(0,0,t.height));
t.prevpos = level.Vec3Offset(target.prev,(0,0,t.height));
t.oldpos = target.pos;
@ -835,6 +836,8 @@ Class SWWMCombatTracker : Thinker
t.intp = DynamicValueInterpolator.Create(t.lasthealth,.5,1,100);
t.myplayer = target.player;
t.next = hnd.trackers;
t.bBOSS = target.bBOSS;
t.bFRIENDLY = target.bFRIENDLY;
if ( hnd.trackers ) hnd.trackers.prev = t;
hnd.trackers = t;
hnd.trackers_cnt++;
@ -920,6 +923,8 @@ Class SWWMCombatTracker : Thinker
Console.Printf(StringTable.Localize("$SWWM_LTFORM"),mytag);
}
}
bBOSS = mytarget.bBOSS|(maxhealth>1000);
bFRIENDLY = mytarget.bFRIENDLY;
lasthealth = mytarget.Health;
intp.Update(lasthealth);
if ( !maxdist ) maxdist = CVar.GetCVar('swwm_maxtargetdist',players[consoleplayer]);

View file

@ -874,6 +874,19 @@ Class SWWMUtility
if ( a.Species == 'Caco' ) return true; // CH
return false;
}
// Друг
static clearscope bool IdentifyingDrug( Actor a )
{
if ( a is 'Beast' ) return true;
return false;
}
static clearscope bool IdentifyingDoubleBoi( Actor a )
{
if ( a is 'Ettin' ) return true;
return false;
}
}
Class RadiusDebugSphere : Actor